我有一堆参数通过URL变量传递给页面。 URL看起来像:
?file.aspx类别[] = 1&安培;类别[] = 7和;类别[] = 3和ID = 8az
使用jQuery getUrlParam扩展我可以非常轻松地获取url变量,但不是将类别作为数组返回(这就是我想要的),它将返回为null。
我有办法将这些内容读入javascript数组吗?
答案 0 :(得分:3)
我之前曾指出过这个问题:Get QueryString values with jQuery - 但正如@Crescent Fresh指出的那样,这些例子并不处理查询字符串中的数组(此外,我认为它们有点慢。< / p>
所以我编写了这个函数的版本:
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()查询添加一个正则表达式来查找它也是微不足道的,但我不是最好的正则表达式专家......任何人都有想法?
答案 1 :(得分:1)
不应该是:file.aspx?category=1&category=7&category=3