web-dev-qa-db-fra.com

Comment obtenir les paramètres de requête "GET" en JavaScript?

Comment obtenir des variables "GET" à partir d'une requête en JavaScript?

Est-ce que jQuery ou YUI! cette fonctionnalité est-elle intégrée?

74
Daniel Silveira

Toutes les données sont disponibles sous

window.location.search

vous devez analyser la chaîne, par exemple.

function get(name){
   if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
      return decodeURIComponent(name[1]);
}

il suffit d'appeler la fonction avec le nom de variable GET en tant que paramètre, par exemple.

get('foo');

cette fonction retournera les variables value ou undefined si la variable n'a pas de valeur ou n'existe pas

164
Rafael

Vous pourriez utiliser jquery.url J'ai fait comme ça:

var xyz = jQuery.url.param("param_in_url");

Vérifiez le code source

Source mise à jour: https://github.com/allmarkedup/jQuery-URL-Parser

36
Kaos

Juste pour mettre mes deux sous, si vous vouliez un objet contenant toutes les requêtes

function getRequests() {
    var s1 = location.search.substring(1, location.search.length).split('&'),
        r = {}, s2, i;
    for (i = 0; i < s1.length; i += 1) {
        s2 = s1[i].split('=');
        r[decodeURIComponent(s2[0]).toLowerCase()] = decodeURIComponent(s2[1]);
    }
    return r;
};

var QueryString = getRequests();

//if url === "index.html?test1=t1&test2=t2&test3=t3"
console.log(QueryString["test1"]); //logs t1
console.log(QueryString["test2"]); //logs t2
console.log(QueryString["test3"]); //logs t3

Notez que la clé de chaque paramètre get est définie sur minuscule. J'ai donc créé une fonction d'assistance. Alors maintenant, il est insensible à la casse.

function Request(name){
    return QueryString[name.toLowerCase()];
}
12
FabianCook

essayez le code ci-dessous, il vous aidera à obtenir les paramètres GET à partir de l’URL . pour plus de détails.

 var url_string = window.location.href; // www.test.com?filename=test
    var url = new URL(url_string);
    var paramValue = url.searchParams.get("filename");
    alert(paramValue)
6

Vous pouvez utiliser l'URL pour acquérir les variables GET. En particulier, window.location.search donne tout après (et y compris) le '?'. Vous pouvez en savoir plus sur window.location here .

5
Daniel Lew

Aujourd'hui, je devais obtenir les paramètres de requête de la page dans un tableau associatif. J'ai donc rassemblé les éléments suivants, avec un peu help from myfriends . Il gère également les paramètres sans = comme true.

Avec un exemple:

// URL: http://www.example.com/test.php?abc=123&def&xyz=&something%20else

var _GET = (function() {
    var _get = {};
    var re = /[?&]([^=&]+)(=?)([^&]*)/g;
    while (m = re.exec(location.search))
        _get[decodeURIComponent(m[1])] = (m[2] == '=' ? decodeURIComponent(m[3]) : true);
    return _get;
})();

console.log(_GET);
> Object {abc: "123", def: true, xyz: "", something else: true}
console.log(_GET['something else']);
> true
console.log(_GET.abc);
> 123
3
Matt

Vous pouvez analyser l'URL de la page en cours pour obtenir les paramètres GET. L'URL peut être trouvé en utilisant location.href.

2
Thomas Owens

Si vous utilisez déjà jquery, il existe un plugin jquery qui gère ceci:

http://plugins.jquery.com/project/query-object

2
brendan

Travaille pour moi dans 

url: http: // localhost: 8080/# /? access_token = 111

function get(name){
  const parts = window.location.href.split('?');
  if (parts.length > 1) {
    name = encodeURIComponent(name);
    const params = parts[1].split('&');
    const found = params.filter(el => (el.split('=')[0] === name) && el);
    if (found.length) return decodeURIComponent(found[0].split('=')[1]);
  }
}
0
Maksim Tikhonov

Une solution carte-réduction:

var urlParams = location.search.split(/[?&]/).slice(1).map(function(paramPair) {
        return paramPair.split(/=(.+)?/).slice(0, 2);
    }).reduce(function (obj, pairArray) {            
        obj[pairArray[0]] = pairArray[1];
        return obj;
    }, {});

Usage:

For url: http://example.com?one=1&two=2
console.log(urlParams.one) // 1
console.log(urlParams.two) // 2
0
Lavi Avigdor

La fonction renvoie ici le paramètre par son nom. Avec de petits changements, vous pourrez retourner l'URL de base, le paramètre ou l'ancre.

function getUrlParameter(name) {
    var urlOld          = window.location.href.split('?');
    urlOld[1]           = urlOld[1] || '';
    var urlBase         = urlOld[0];
    var urlQuery        = urlOld[1].split('#');
    urlQuery[1]         = urlQuery[1] || '';
    var parametersString = urlQuery[0].split('&');
    if (parametersString.length === 1 && parametersString[0] === '') {
        parametersString = [];
    }
    // console.log(parametersString);
    var anchor          = urlQuery[1] || '';

    var urlParameters = {};
    jQuery.each(parametersString, function (idx, parameterString) {
        paramName   = parameterString.split('=')[0];
        paramValue  = parameterString.split('=')[1];
        urlParameters[paramName] = paramValue;
    });
    return urlParameters[name];
}
0
Tobi G.