Come recuperare i parametri GET da javascript?


Answers

window.location.search restituirà tutto dal? sopra. Questo rimuoverà il?, Usa split per separare in array di chiavi / valori, quindi assegna le proprietà nominate all'oggetto 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();

È quindi possibile ottenere il parametro di test da http://myurl.com/?test=1 chiamando params.test .

Question

Questa domanda ha già una risposta qui:

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

Per js in page.html , come può recuperare i parametri GET ?

Per il semplice esempio sopra riportato, func('returnurl') dovrebbe essere /admin

Ma dovrebbe funzionare anche per complessi querystrngs ...







La mia soluzione si espande su @ tak3r's

Restituisce un oggetto vuoto quando non ci sono parametri di query e supporta la notazione dell'array ?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, {});
}



Per ottenere i parametri come oggetto 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;
}



Questo usa regex e restituisce null se param non esiste o non ha valore:

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






lo faccio così (per recuperare uno specifico parametro get, qui 'parameterName'):

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



Ecco un altro esempio basato sull'esempio di Kat e Bakudan sopra, ma rendendolo un po 'più generico.

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



Links