【问题标题】:Get Query String Values for Duplicate GET Variables获取重复 GET 变量的查询字符串值
【发布时间】:2013-12-14 06:19:41
【问题描述】:

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

How can I get query string values in JavaScript?

jquery get querystring from URL

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

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

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

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

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

感谢您的帮助!

【问题讨论】:

  • 所以在你的查询字符串中你会有 search=a&search=b?请把问题说清楚
  • 是的,完全正确。我会更新问题。
  • 这个插件会将查询字符串中的重复值解析成一个数组。 benalman.com/code/projects/jquery-bbq/docs/files/…
  • 试试这个:?search[0]=this&search[1]=that.. 这将自动解析为数组。

标签: javascript jquery get query-string


【解决方案1】:

这应该可以解决问题:

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"] }

【讨论】:

    【解决方案2】:

    // 读取页面的 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

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 2013-06-19
      • 2020-02-12
      • 2013-01-05
      相关资源
      最近更新 更多