How to retrieve GET parameters from javascript?

This question already has an answer here:

  • How can I get query string values in JavaScript? 73 answers

  • 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 cycle, 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 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"
    > queryDict
    a: "%2Fadmin"  //overriden with last value, not decoded.
    b: "2"
    c: "3"
    d: undefined
    e: 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"
    > queryDict
    a: ["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"
    
    链接地址: http://www.djcxy.com/p/17592.html

    上一篇: 在JavaScript中解析查询字符串

    下一篇: 如何从JavaScript中检索GET参数?