web-dev-qa-db-fra.com

Comment obtenir la chaîne de requête par javascript?

Comment extraire la chaîne de requête de l'URL en javascript?

Je vous remercie!

30
Jayesh

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"]; 
49
Josh Stodola

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.

31
Syntactic

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 .

3
B.B

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');
3
user2788596

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;
}
1
Andy

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) }.

1
nils

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;        

    }

 }
1
Abhimanyu Garg
// 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"
0
praveen kedar

Vous pouvez utiliser ceci Javascript:

function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

OR

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

0
Gagan Gami

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();
0
Amay Kulkarni