Como recuperar parâmetros GET de javascript?

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

Para js dentro de page.html , como ele pode recuperar os parâmetros GET ?

Para o exemplo simples acima, func('returnurl') deve ser /admin

Mas também deve funcionar para querystrngs complexos …

    Com o object window.location . Este código fornece GET sem o ponto de interrogação.

     window.location.search.substr(1) 

    Do seu exemplo, ele retornará returnurl=%2Fadmin

    EDIT : Eu tomei a liberdade de mudar a resposta de Qwerty , o que é realmente bom , e como ele apontou eu segui exatamente o que o OP perguntou:

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

    Eu removi a execução da function duplicada de seu código, substituindo-a por uma variável (tmp) e também adicionei decodeURIComponent , exatamente como OP solicitou. Não tenho certeza se isso pode ou não ser um problema de segurança.

    Ou, caso contrário, com planície para ciclo, que funcionará mesmo no 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 irá retornar tudo do? em. Este código abaixo removerá o?, Use o split para separar em matrizes de chave / valor e, em seguida, atribua propriedades nomeadas ao object 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(); 

    Você pode então obter o parâmetro de teste em http://myurl.com/?test=1 chamando params.test .

    tl; dr solução em uma única linha de código usando o javascript de baunilha

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

    Esta é a solução mais simples . Infelizmente, ele não manipula chaves com valores múltiplos e caracteres codificados.

     "?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 

    chaves com valores múltiplos e caracteres codificados ?

    Veja a resposta original em Como posso obter valores de string de consulta em 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"] 


    No seu exemplo, você acessaria o valor da seguinte forma:

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

    Ei, aqui está a resposta certa para 2016:

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

    uma maneira mais chique de fazer isso: 🙂

     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; }, {}); 

    Eu faço assim (para recuperar um parâmetro get específico, aqui ‘parameterName’):

     var parameterValue = decodeURIComponent(window.location.search.match(/(\?|&)parameterName\=([^&]*)/)[2]); 

    Aqui eu fiz este código para transformar os parâmetros GET em um object para usá-los mais facilmente.

     //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 
     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; }; 

    Este aqui usa regex e retorna null se param não existe ou não tem valor:

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

    Se você não se importar em usar uma biblioteca em vez de implementar sua própria implementação, confira https://github.com/jgallen23/querystring .

    Esta solução lida com a decodificação de 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) : {}; }(); 

    Uso:

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

    Minha solução se expande no @ tak3r ‘s

    Ele retorna um object vazio quando não há parâmetros de consulta e suporta a notação de matriz ?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, {}); } 

    Se você estiver usando angularjs, você pode usar $routeParams usando o módulo ngRoute

    Você precisa adicionar o módulo ao seu aplicativo

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

    Agora você pode usar o serviço $routeParams

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

    Aqui está outro exemplo baseado no exemplo de Kat e Bakudan acima, mas tornando-o um pouco mais genérico.

     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"]); 

    Você pode usar a function de pesquisa disponível no object de localização. A function de pesquisa fornece a parte do parâmetro do URL. detalhes podem ser encontrados aqui – http://www.javascriptkit.com/jsref/location.shtml

    Você terá que analisar a string resultante para obter as variables ​​e seus valores, por exemplo, dividindo-os em ‘=’

    Para obter os parâmetros como um object 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; } 

    Eu criei uma function JavaScript simples para acessar os parâmetros GET da URL.

    Apenas inclua esta fonte Javascript e você pode acessar os parâmetros get . Por exemplo: em http://example.com/index.php?language=french , a variável de language pode ser acessada como $_GET["language"] . Da mesma forma, uma lista de todos os parâmetros armazenados em uma variável $_GET_Params como uma matriz. Tanto o Javascript quanto o HTML são fornecidos no seguinte trecho de código:

     < !DOCTYPE html>     

    GET Parameters

    Try to insert some get parameter and access it through javascript