看來你的代碼工作正常,但是,它將無法正常使用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說得對。 –