我有一堆参数被URL变量传递给页面。该URL看起来有点像:在javascript中获取URL数组变量/ jquery
file.aspx类别[] = 1个&类别[] = 7 &类别[] = 3 & ID = 8az
使用jQuery getUrlParam扩展,我可以得到URL变量非常容易,但不是返回类别作为数组(这是我想要的)它返回为null。
有没有一种方法可以让我将这些读入javascript数组中?
我有一堆参数被URL变量传递给页面。该URL看起来有点像:在javascript中获取URL数组变量/ jquery
file.aspx类别[] = 1个&类别[] = 7 &类别[] = 3 & ID = 8az
使用jQuery getUrlParam扩展,我可以得到URL变量非常容易,但不是返回类别作为数组(这是我想要的)它返回为null。
有没有一种方法可以让我将这些读入javascript数组中?
它不应该是:file.aspx?category=1&category=7&category=3
我以前指出这个问题:Get QueryString values with jQuery - 但@Crescent新鲜指出,这些例子不与查询字符串数组处理(再说,他们有点慢,我认为
。所以我做了我的版本的功能:
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;
}
但有警告它只会在正确的形成的查询字符串的工作 - 有没有错误检测此外,这是行不通的编号/索引数组。 。那就是当你的数组在查询字符串中被定义为:
?category[3]=1&category[4]=7&category[20]=3&id=8az
将.search()查询添加到正则表达式以找到该错误也是微不足道的,但我不是最好的正则表达式专家......任何人都有想法?
没有一个统一的答案会有做的OP是要求(在查询字符串即阵列检测)。 – 2011-02-11 04:27:20
你是对的。我没有意识到 - 我只是看到了一个复杂的功能,我认为一些复杂的事情必须做正确的事情......但事实并非如此。我添加了我的版本。 – arnorhs 2011-02-11 09:20:55