Comment récupérer les paramètres GET à partir de javascript?

http://domain.com/page.html?returnurl=%2Fadmin 

Pour js dans la page.html , comment peut-on récupérer GET paramètres GET ?

Pour l'exemple simple ci-dessus, func('returnurl') devrait être /admin

Mais il devrait également fonctionner pour des requêtes complexes …

    Avec l'objet window.location . Ce code vous donne GET sans le point d'interrogation.

     window.location.search.substr(1) 

    Dans votre exemple, il renverra returnurl=%2Fadmin

    EDIT : J'ai pris la liberté de changer la réponse de Qwerty , ce qui est vraiment bon , et comme il l'a souligné, j'ai suivi exactement ce que l'OP a demandé:

     function findGetParameter(parameterName) { var result = null, tmp = []; location.search .substr(1) .split("&") .forEach(function (item) { tmp = item.split("="); if (tmp[0] === parameterName) result = decodeURIComponent(tmp[1]); }); return result; } 

    J'ai supprimé l'exécution de la fonction dupliquée à partir de son code, en la remplaçant par une variable (tmp) et j'ai ajouté decodeURIComponent , exactement comme OP demandé. Je ne sais pas si cela peut ou non être un problème de sécurité.

    Ou autrement avec un cycle simple, qui fonctionnera même dans IE8:

     function findGetParameter(parameterName) { var result = null, tmp = []; var items = location.search.substr(1).split("&"); for (var index = 0; index < items.length; index++) { tmp = items[index].split("="); if (tmp[0] === parameterName) result = decodeURIComponent(tmp[1]); } return result; } 

    window.location.search renverra tout à partir du? sur. Cela supprime le?, Utilisez split pour séparer les tableaux de clés / valeurs, puis affectez les propriétés nommées à l'objet params:

     function getSearchParameters() { var prmstr = window.location.search.substr(1); return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {}; } function transformToAssocArray( prmstr ) { var params = {}; var prmarr = prmstr.split("&"); for ( var i = 0; i < prmarr.length; i++) { var tmparr = prmarr[i].split("="); params[tmparr[0]] = tmparr[1]; } return params; } var params = getSearchParameters(); 

    Vous pouvez ensuite obtenir le paramètre de test à partir de http://myurl.com/?test=1 en appelant params.test .

    Tl; dr solution sur une seule ligne de code utilisant vanilla javascript

     var queryDict = {} location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]}) 

    C'est la solution la plus simple . Malheureusement, il ne gère pas les clés multi-valeurs et les caractères codés.

     "?a=1&a=%2Fadmin&b=2&c=3&d&e" > queryDict a: "%2Fadmin" //overriden with last value, not decoded. b: "2" c: "3" d: undefined e: undefined 

    Clés à plusieurs valeurs et caractères codés ?

    Voir la réponse initiale à Comment puis-je obtenir des valeurs de chaîne de requête en JavaScript?

     "?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab&a=%2Fadmin" > queryDict a: ["1", "5", "text", "/admin"] b: ["2"] c: ["3"] d: [undefined] e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"] 

    Dans votre exemple, vous accédez à la valeur comme ceci:

     "?returnurl=%2Fadmin" > qd.returnurl // ["/admin"] > qd['returnurl'] // ["/admin"] > qd.returnurl[0] // "/admin" 

    Une façon plus chic de le faire: 🙂

     var options = window.location.search.slice(1) .split('&') .reduce(function _reduce (/*Object*/ a, /*String*/ b) { b = b.split('='); a[b[0]] = decodeURIComponent(b[1]); return a; }, {}); 

    Hé voici la bonne réponse pour 2016:

     // location = `https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8&q=mdn%20query%20string` some = new URLSearchParams(window.location.search) some.get('q') // 'mdn query string' some.has('ie') // true some.append('new','here').toString() // "sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8&q=mdn+query+string&new=here" 

    https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams https://polyfill.io/v2/docs/features/

    Je le fais comme ceci (pour récupérer un paramètre de consigne spécifique, ici 'ParamètreName'):

     var parameterValue = decodeURIComponent(window.location.search.match(/(\?|&)parameterName\=([^&]*)/)[2]); 
     var getQueryParam = function(param) { var found; window.location.search.substr(1).split("&").forEach(function(item) { if (param == item.split("=")[0]) { found = item.split("=")[1]; } }); return found; }; 

    Ici, j'ai fait ce code pour transformer les paramètres GET en un objet pour les utiliser plus facilement.

     //Get Nav Url function getNavUrl() { //Get Url return window.location.search.replace("?", ""); }; function getParameters(url) { //Params obj var params = {}; //To lowercase url = url.toLowerCase(); //To array url = url.split('&'); //Iterate over url parameters array var length = url.length; for(var i=0; i<length; i++) { //Create prop var prop = url[i].slice(0, url[i].search('=')); //Create Val var value = url[i].slice(url[i].search('=')).replace('=', ''); //Params New Attr params[prop] = value; } return params; }; //Call To getParameters console.log(getParameters(getNavUrl())); 

    Si vous ne vous occupez pas d'utiliser une bibliothèque au lieu de rouler votre propre implémentation, consultez la https://github.com/jgallen23/querystring .

    Cette solution gère le décodage d'URL:

     var params = function() { function urldecode(str) { return decodeURIComponent((str+'').replace(/\+/g, '%20')); } function transformToAssocArray( prmstr ) { var params = {}; var prmarr = prmstr.split("&"); for ( var i = 0; i < prmarr.length; i++) { var tmparr = prmarr[i].split("="); params[tmparr[0]] = urldecode(tmparr[1]); } return params; } var prmstr = window.location.search.substr(1); return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {}; }(); 

    Usage:

     console.log('someParam GET value is', params['someParam']); 

    Celui-ci utilise le regex et renvoie null si le paramètre n'existe pas ou n'a aucune valeur:

     function getQuery(q) { return (window.location.search.match(new RegExp('[?&]' + q + '=([^&]+)')) || [, null])[1]; } 

    Ma solution se développe sur @ tak3r 's

    Il renvoie un objet vide lorsqu'il n'y a pas de params de requête et prend en charge la notation de tableau ?a=1&a=2&a=3 :

     function getQueryParams () { function identity (e) { return e; } function toKeyValue (params, param) { var keyValue = param.split('='); var key = keyValue[0], value = keyValue[1]; params[key] = params[key]?[value].concat(params[key]):value; return params; } return decodeURIComponent(window.location.search). replace(/^\?/, '').split('&'). filter(identity). reduce(toKeyValue, {}); } 

    Si vous utilisez angularjs, vous pouvez utiliser $routeParams aide ngRoute module ngRoute

    Vous devez ajouter un module sur votre application

     angular.module('myApp', ['ngRoute']) 

    Maintenant, vous pouvez utiliser le service $routeParams

     .controller('AppCtrl', function($routeParams) { console.log($routeParams); //json object } 

    Vous pouvez utiliser la fonction de recherche disponible dans l'objet de localisation. La fonction de recherche donne la partie de paramètre de l'URL. Des détails peuvent être trouvés ici – http://www.javascriptkit.com/jsref/location.shtml

    Vous devrez analyser la chaîne résultante pour obtenir les variables et leurs valeurs, par exemple en les divisant en '='

    Pour obtenir les paramètres en tant qu'objet JSON:

     alert(getUrlParameters().toSource()) function explode(delim, str) { return str.split(delim); } function getUrlParameters() { var out = {}; var str = window.location.search.replace("?", ""); var subs = explode('&', str); for(var i = 0; i < subs.length; ++i) { var vals = explode('=', subs[i]); out[vals[0]] = vals[1]; } return out; } 

    J'ai créé une fonction Javascript simple pour accéder aux paramètres GET à partir de l'URL.

    Ajoutez simplement cette source Javascript et vous pouvez accéder get paramètres. Par exemple: dans http://example.com/index.php?language=french , on peut accéder à la variable de language comme $_GET["language"] . De même, une liste de tous les paramètres stockés dans une variable $_GET_Params comme un tableau. Le Javascript et le HTML sont fournis dans l'extrait de code suivant:

     <!DOCTYPE html> <html> <body> <!-- This script is required --> <script> function $_GET() { // Get the Full href of the page eg http://www.google.com/files/script.php?v=1.8.7&country=india var href = window.location.href; // Get the protocol eg http var protocol = window.location.protocol + "//"; // Get the host name eg www.google.com var hostname = window.location.hostname; // Get the pathname eg /files/script.php var pathname = window.location.pathname; // Remove protocol part var queries = href.replace(protocol, ''); // Remove host part queries = queries.replace(hostname, ''); // Remove pathname part queries = queries.replace(pathname, ''); // Presently, what is left in the variable queries is : ?v=1.8.7&country=india // Perform query functions if present if (queries != "" && queries != "?") { // Remove question mark ? queries = queries.slice(1); // Split all the different queries queries = queries.split("&"); // Get the number of queries var length = queries.length; // Declare global variables to store keys and elements $_GET_Params = new Array(); $_GET = {}; // Perform functions per query for (var i = 0; i < length; i++) { // Get the present query var key = queries[i]; // Split the query and the value key = key.split("="); // Assign value to the $_GET variable $_GET[key[0]] = [key[1]]; // Assign value to the $_GET_Params variable $_GET_Params[i] = key[0]; } } } // Execute the function $_GET(); </script> <h1>GET Parameters</h1> <h2>Try to insert some get parameter and access it through javascript</h2> </body> </html> 

    Voici un autre exemple basé sur l'exemple de Kat et Bakudan ci-dessus, mais ce qui en fait un peu plus générique.

     function getParams () { var result = {}; var tmp = []; location.search .substr (1) .split ("&") .forEach (function (item) { tmp = item.split ("="); result [tmp[0]] = decodeURIComponent (tmp[1]); }); return result; } location.getParams = getParams; console.log (location.getParams()); console.log (location.getParams()["returnurl"]);