Comment extraire la chaîne de requête de l'URL en javascript?
Je vous remercie!
Vous pouvez facilement créer une collection de styles de dictionnaire ...
function getQueryStrings() {
var assoc = {};
var decode = function (s) { return decodeURIComponent(s.replace(/\+/g, " ")); };
var queryString = location.search.substring(1);
var keyValues = queryString.split('&');
for(var i in keyValues) {
var key = keyValues[i].split('=');
if (key.length > 1) {
assoc[decode(key[0])] = decode(key[1]);
}
}
return assoc;
}
Et utilisez-le comme ça ...
var qs = getQueryStrings();
var myParam = qs["myParam"];
Si vous faites référence à l'URL dans la barre d'adresse, alors
window.location.search
vous donnera juste la partie de la chaîne de requête. Notez que cela inclut le point d'interrogation au début.
Si vous faites référence à une URL aléatoire stockée dans (par exemple) une chaîne, vous pouvez accéder à la chaîne de requête en prenant une sous-chaîne commençant à l'index du premier point d'interrogation en procédant comme suit:
url.substring(url.indexOf("?"))
Cela suppose que tous les points d'interrogation de la partie fragmentée de l'URL ont été correctement codés. S'il y a une cible à la fin (c'est-à-dire un # suivi de l'id d'un élément DOM), elle l'inclura aussi.
Voici la méthode que j'utilise ...
function Querystring() {
var q = window.location.search.substr(1), qs = {};
if (q.length) {
var keys = q.split("&"), k, kv, key, val, v;
for (k = keys.length; k--; ) {
kv = keys[k].split("=");
key = kv[0];
val = decodeURIComponent(kv[1]);
if (qs[key] === undefined) {
qs[key] = val;
} else {
v = qs[key];
if (v.constructor != Array) {
qs[key] = [];
qs[key].Push(v);
}
qs[key].Push(val);
}
}
}
return qs;
}
Il retourne un objet de chaînes et de tableaux et semble fonctionner assez bien .
Vous devez utiliser simplement la fonction suivante.
function GetQueryStringByParameter(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
--- Comment utiliser ---
var QueryString= GetQueryStringByParameter('QueryString');
Très simple!
function parseQueryString(){
var assoc = {};
var keyValues = location.search.slice(1).split('&');
var decode = function(s){
return decodeURIComponent(s.replace(/\+/g, ' '));
};
for (var i = 0; i < keyValues.length; ++i) {
var key = keyValues[i].split('=');
if (1 < key.length) {
assoc[decode(key[0])] = decode(key[1]);
}
}
return assoc;
}
Il existe une nouvelle API appelée URLSearchParams
dans les navigateurs qui vous permet d'extraire et de modifier les valeurs de la chaîne de requête.
Actuellement, il semble être supporté par Firefox 44+, Chrome 49+ et Opera 36+.
Initialize/Input
Pour commencer, créez un nouvel objet URLSearchParams. Pour les implémentations actuelles, vous devez supprimer le "?" au début de la chaîne de requête, utilisez slice(1)
sur la chaîne de requête, comme le suggère Jake Archibald :
var params = new URLSearchParams(window.location.search.slice(1)); // myParam=12
Dans les implémentations ultérieures, vous devriez pouvoir l’utiliser sans tranche:
var params = new URLSearchParams(window.location.search); // myParam=12
Get
Vous pouvez en obtenir des paramètres via la méthode .get
:
params.get('myParam'); // 12
Ensemble
Les paramètres peuvent être modifiés avec .set
:
params.set('myParam', 'newValue');
Sortie
Et si la chaîne de requête actuelle est à nouveau nécessaire, la méthode .toString
le fournit:
params.toString(); // myParam=newValue
Il y a un hôte d'autres méthodes dans cette API .
Polyfill
Comme le support du navigateur est encore assez fin, il y a un petit polyfill d'Andrea Giammarchi (<3kB) }.
Travaille pour moi-
function querySt(Key) {
var url = window.location.href;
KeysValues = url.split(/[\?&]+/);
for (i = 0; i < KeysValues.length; i++) {
KeyValue= KeysValues[i].split("=");
if (KeyValue[0] == Key) {
return KeyValue[1];
}
}
}
function GetQString(Key) {
if (querySt(Key)) {
var value = querySt(Key);
return value;
}
}
// Assuming "?post=1234&action=edit"
var urlParams = new URLSearchParams(window.location.search);
console.log(urlParams.has('post')); // true
console.log(urlParams.get('action')); // "edit"
console.log(urlParams.getAll('action')); // ["edit"]
console.log(urlParams.toString()); // "?post=1234&action=edit"
console.log(urlParams.append('active', '1')); // "?post=1234&action=edit&active=1"
Vous pouvez utiliser ceci Javascript:
function getParameterByName(name) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
Vous pouvez également utiliser le plugin jQuery-URL-Parser permet de récupérer toutes les parties de l'URL, y compris l'ancre, l'hôte, etc.
L'utilisation est très simple et cool:
$.url().param("itemID")
via James & Alfa
J'ai utilisé cette méthode
function getString()
{
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;
}
var buisnessArea = getString();