2013-04-07 32 views
10
查詢字符串數組值

我有一個使用GET方法幷包含一個數組形式:可以在javascript

http://www.example.com?name[]=hello&name[]=world

我試圖找回數組值「你好」和使用JavaScript或「世界」 jQuery的。

我已經看過堆棧溢出(例如How can I get query string values in JavaScript?)類似的解決方案,但他們似乎只處理參數,而不是數組。

是否可以獲取數組值?

+1

在你張貼會在你的情況下工作太,除非PARMS重複的鏈接答案http://stackoverflow.com/a/3855394/295783通過你的建議提及數組和使用[] – mplungjan 2013-04-07 17:56:37

+1

只是要清楚:URL沒有* arrays *的概念。你所擁有的只是多個參數同名。 '[]'通常用於PHP服務器,然後它將使用這些參數創建數組。其他語言(例如Python)可以處理具有相同名稱的多個參數(並且沒有'[]')就好了。 – 2013-04-07 17:56:43

+2

從你鏈接到的問題,你可能會發現這個答案有幫助:http://stackoverflow.com/a/9362596/218196。 – 2013-04-07 18:00:22

回答

11

你去那裏:http://jsfiddle.net/mm6Bt/1/

function getURLParam(key,target){ 
    var values = []; 
    if (!target) target = location.href; 

    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 

    var pattern = key + '=([^&#]+)'; 
    var o_reg = new RegExp(pattern,'ig'); 
    while (true){ 
     var matches = o_reg.exec(target); 
     if (matches && matches[1]){ 
      values.push(matches[1]); 
     } else { 
      break; 
     } 
    } 

    if (!values.length){ 
     return null; 
    } else { 
     return values.length == 1 ? values[0] : values; 
    } 
} 

var str = 'http://www.example.com?name[]=hello&name[]=world&var1=stam'; 

console.log(getURLParam('name[]',str)); 
console.log(getURLParam('var1',str)); 
+0

非常感謝,阿迪。這是完美的! :) – iltdev 2013-04-07 18:19:12

+0

非常歡迎^^ – Adidi 2013-04-07 18:20:03

+0

經過一番苦苦掙扎,我發現如果它是一個數組,我們需要追加[]來命名!現在看起來很明顯,但不知何故,我浪費了一個小時才注意到它。 – 2016-07-03 17:08:22