How to retrieve GET parameters from JavaScript [duplicate] How to retrieve GET parameters from JavaScript [duplicate] javascript javascript

How to retrieve GET parameters from JavaScript [duplicate]


With the window.location object. This code gives you GET without the question mark.

window.location.search.substr(1)

From your example it will return returnurl=%2Fadmin

EDIT: I took the liberty of changing Qwerty's answer, which is really good, and as he pointed I followed exactly what the OP asked:

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

I removed the duplicated function execution from his code, replacing it a variable ( tmp ) and also I've added decodeURIComponent, exactly as OP asked. I'm not sure if this may or may not be a security issue.

Or otherwise with plain for loop, which will work even in 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 will return everything from the ? on. This code below will remove the ?, use split to separate into key/value arrays, then assign named properties to the params object:

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();

You can then get the test parameter from http://myurl.com/?test=1 by calling params.test.


tl;dr solution on a single line of code using vanilla JavaScript

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

This is the simplest solution. It unfortunately does not handle multi-valued keys and encoded characters.

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

Multi-valued keys and encoded characters?

See the original answer at How can I get query string values in 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"> queryDicta: ["1", "5", "t e x t", "/admin"]b: ["2"]c: ["3"]d: [undefined]e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"]

In your example, you would access the value like this:

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