Duplicate possible:
Comment puis-je obtenir les valeurs d'une chaîne de requête?
J'ai l'URL suivante:
http://www.mysite.co.uk/?location=mylocation1
Ce dont j'ai besoin, c'est d'extraire la valeur de location
de l'URL dans une variable, puis de l'utiliser dans un code jQuery:
var thequerystring = "getthequerystringhere"
$('html,body').animate({scrollTop: $("div#" + thequerystring).offset().top}, 500);
Est-ce que quelqu'un sait comment saisir cette valeur en utilisant JavaScript ou jQuery?
De: http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html
C'est ce dont tu as besoin :)
Le code suivant renverra un objet JavaScript contenant les paramètres d'URL:
// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.Push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
Par exemple, si vous avez l'URL:
http://www.example.com/?me=myValue&name2=SomeOtherValue
Ce code retournera:
{
"me" : "myValue",
"name2" : "SomeOtherValue"
}
et vous pouvez faire:
var me = getUrlVars()["me"];
var name2 = getUrlVars()["name2"];
Pour récupérer la chaîne de requêtes complète depuis l'URL actuelle, en commençant par le caractère ?
, vous pouvez utiliser
location.search
https://developer.mozilla.org/en-US/docs/DOM/window.location
Exemple:
// URL = https://example.com?a=a%20a&b=b123
console.log(location.search); // Prints "?a=a%20a&b=b123"
En ce qui concerne la récupération de paramètres de chaîne de requête spécifiques, bien que des classes telles que URLSearchParams
et URL
existent, elles ne sont pas actuellement prises en charge par Internet Explorer et devraient probablement être évitées. Au lieu de cela, vous pouvez essayer quelque chose comme ceci:
/**
* Accepts either a URL or querystring and returns an object associating
* each querystring parameter to its value.
*
* Returns an empty object if no querystring parameters found.
*/
function getUrlParams(urlOrQueryString) {
if ((i = urlOrQueryString.indexOf('?')) >= 0) {
const queryString = urlOrQueryString.substring(i+1);
if (queryString) {
return _mapUrlParams(queryString);
}
}
return {};
}
/**
* Helper function for `getUrlParams()`
* Builds the querystring parameter to value object map.
*
* @param queryString {string} - The full querystring, without the leading '?'.
*/
function _mapUrlParams(queryString) {
return queryString
.split('&')
.map(function(keyValueString) { return keyValueString.split('=') })
.reduce(function(urlParams, [key, value]) {
if (Number.isInteger(parseInt(value)) && parseInt(value) == value) {
urlParams[key] = parseInt(value);
} else {
urlParams[key] = decodeURI(value);
}
return urlParams;
}, {});
}
Vous pouvez utiliser ce qui précède comme ceci:
// Using location.search
let urlParams = getUrlParams(location.search); // Assume location.search = "?a=1&b=2b2"
console.log(urlParams); // Prints { "a": 1, "b": "2b2" }
// Using a URL string
const url = 'https://example.com?a=A%20A&b=1';
urlParams = getUrlParams(url);
console.log(urlParams); // Prints { "a": "A A", "b": 1 }
// To check if a parameter exists, simply do:
if (urlParams.hasOwnProperty('parameterName') {
console.log(urlParams.parameterName);
}
Un moyen facile de faire cela avec quelques jQuery et straight JS, affichez simplement votre console dans Chrome ou Firefox pour voir le résultat ...
var queries = {};
$.each(document.location.search.substr(1).split('&'),function(c,q){
var i = q.split('=');
queries[i[0].toString()] = i[1].toString();
});
console.log(queries);
Jetez un oeil à ceci réponse stackoverflow .
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
Vous pouvez utiliser la méthode pour animer:
c'est à dire:
var thequerystring = getParameterByName("location");
$('html,body').animate({scrollTop: $("div#" + thequerystring).offset().top}, 500);
On fait comme ça ...
String.prototype.getValueByKey = function (k) {
var p = new RegExp('\\b' + k + '\\b', 'gi');
return this.search(p) != -1 ? decodeURIComponent(this.substr(this.search(p) + k.length + 1).substr(0, this.substr(this.search(p) + k.length + 1).search(/(&|;|$)/))) : "";
};