看来你的代码工作正常,但是,它将无法正常使用URL与分配多个值查询参数的工作(如http://example.com/page.php?param=foo¶m=bar
)。此外,如果其中一个查询字符串参数名称为length
或其他内容,则可能对params
阵列造成不利影响 - 尝试使用其他容器可能会更好。
var params = [], hash;
var q = 'example.com/index.html?param1=foo¶m2=data'.split('?')[1];
if(q != undefined){
q = q.split('&');
for(var i = 0; i < q.length; i++){
hash = q[i].split('=');
params.push(hash[1]);
params[hash[0]] = hash[1];
}
}
console.dir(params); // Array[2] 0: "foo" 1: "data" length: 2 param1: "foo" param2: "data" __proto__: Array[0]
我建议具有params
变量是一个对象,并跳过线params.push(hash[1])
,因为可以在使用for..in
环容易足够的属性迭代和参数的顺序当不可反正无论如何。如果某个特定名称的参数有多个值,那么该参数的值将是一个数组。例如,?param=foo¶m=bar
最终会被解析为{ param: ["foo", "bar"] }
。
你是什么意思多重?什么是不起作用的示例网址? – epascarello
@epascarello他的意思是example.com/index.html?param1=foo¶m2=data –
@LeoWilson说得对。 –