获取javascript/jquery中的URL数组变量

获取javascript/jquery中的URL数组变量,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我有一堆参数通过URL变量传递给页面。URL看起来有点像: file.aspx?类别[]=1和类别[]=7和类别[]=3&id=8az 使用jQuery getUrlParam扩展,我可以非常容易地获取url变量,但它不是以数组的形式返回类别(这是我想要的),而是以null的形式返回 有没有一种方法可以让我把它们读入javascript数组?我之前提到过这个问题:-但正如@Crescent Fresh所指出的,这些示例不处理查询字符串中的数组(而且,我认为它们有点慢) 所以我设计了这个函数的版本

我有一堆参数通过URL变量传递给页面。URL看起来有点像:

file.aspx?类别[]=1和类别[]=7和类别[]=3&id=8az

使用jQuery getUrlParam扩展,我可以非常容易地获取url变量,但它不是以数组的形式返回类别(这是我想要的),而是以null的形式返回


有没有一种方法可以让我把它们读入javascript数组?

我之前提到过这个问题:-但正如@Crescent Fresh所指出的,这些示例不处理查询字符串中的数组(而且,我认为它们有点慢)

所以我设计了这个函数的版本:

function getQueryString () {
    var ret = {};
    var parts = (document.location.toString().split('?')[1]).split('&');
    for (var i = 0; i < parts.length; i++) {

        var p = parts[i].split('=');
        // so strings will be correctly parsed:
        p[1] = decodeURIComponent(p[1].replace(/\+/g, " "));

        if (p[0].search(/\[\]/) >= 0) { // then it's an array
            p[0] = p[0].replace('[]','');

            if (typeof ret[p[0]] != 'object') ret[p[0]] = [];
            ret[p[0]].push(p[1]);
        } else {
            ret[p[0]] = p[1];
        }
    }
    return ret;
}

在.search()查询中添加一个regex也可以找到它,但我不是最好的regex专家…有人有想法吗?

应该是:
file.aspx?category=1&category=7&category=3

没有一个答案可以满足OP的要求(即查询字符串中的数组检测).你是对的。我没有意识到-我只是看到了一个复杂的函数,我认为如此复杂的函数必须正确运行..但它没有。我添加了我的版本。为什么不直接发布它而不是获取?如果我可以选择两个答案,我会的。这回答了我真正问的问题,Timothy的答案是我真正需要的。事实上是的,有getUrlParam根据我的需要返回一个数组。因为,正如他刚才所说的…“实际上是的,[我的建议]确实”做了他需要的事情。但是查询字符串与服务器软件不兼容…?@arnorhs-不,很可能他在构建查询字符串时无意添加“[]”。
?category[3]=1&category[4]=7&category[20]=3&id=8az