获取重复GET变量的查询字符串值

时间:2013-12-14 06:19:41

标签: javascript jquery get query-string

我已经看过如何使用Javascript和jQuery解析查询字符串信息(GET变量)。这里有两个不同的例子(我总是更喜欢第二个):

How can I get query string values in JavaScript?

jquery get querystring from URL

问题是我有一个查询字符串,它有两个相同的GET变量(它们都被称为'搜索')。当我从第一个答案运行函数时,它只返回'search'GET变量的第一个实例,第二个答案只返回最后一个'search'GET变量。示例查询字符串将是:

http://www.example.com?search=this&search=that

我做了一些搜索,这个帖子中有一个似乎可以解决这个问题的答案:

https://gist.github.com/kares/956897

但我不知道如何用它的编写方式来实现它。我基本上正在寻找一个函数,它可以解析查询字符串并返回与特定GET变量匹配的所有(如果有的话)值(在本例中为'search';在上面的示例中,它将返回'this'和'that' )。

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

这应该可以解决问题:

var params = location.search.substr(1).split('&'),
    results = {};

for(var i = 0; i < params.length; i++)
{
    var temp = params[i].split('='),
        key = temp[0],
        val = temp[1];

    results[key] = results[key] || [];
    results[key].push(val);
}

console.log(results); // { search: ["a", "b"] }

答案 1 :(得分:0)

//读取页面的GET URL变量并将其作为关联数组返回。

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        if(typeof vars[hash[0]]=='undefined'){
         vars.push(hash[0]);
         vars[hash[0]] = [hash[1]];
    }else{
            vars[hash[0]].push(hash[1]);
    }
    }
    return vars;
}

您可以找到演示here