compile-fan compile-fan - 3 months ago 13
Javascript Question

How to retrieve GET parameters from javascript?

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


For
js
within
page.html
,how can it retrieve
GET
parameters?

For the above simple example,
func('returnurl')
should be
/admin


But it should also work for complex querystrngs...

Answer

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

window.location.search.replace("?", "");

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 parse(val) {
    var result = "Not found",
        tmp = [];
    location.search
    //.replace ( "?", "" ) 
    // this is better, there might be a question mark inside
    .substr(1)
        .split("&")
        .forEach(function (item) {
        tmp = item.split("=");
        if (tmp[0] === val) 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 cycle, which will work even in IE8:

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