2013-12-14 54 views
1

我見過如何使用Javascript和jQuery解析查詢字符串信息(GET變量)。有兩種不同的例子在這裏(我一直喜歡第二個):獲取重複GET變量的查詢字符串值

How can I get query string values in JavaScript?

jquery get querystring from URL

的問題是,我有兩個相同的GET變量的查詢字符串(它們都稱爲「搜索」)。當我從第一個答案運行函數時,它只返回'search'GET變量的第一個實例,第二個答案只返回最後一個'搜索'GET變量。一個例子查詢字符串是:

http://www.example.com?search=this&search=that 

我做了一些搜索和有在這個線程,似乎處理這個問題的答案:

https://gist.github.com/kares/956897

但我不到底如何知道用它寫的方式來實現它。我基本上正在尋找一個函數,它可以解析查詢字符串並返回匹配特定GET變量的所有(如果有的話)值(在這個例子中是'search';在上面的例子中,它會返回'this'和'that' )。

感謝您的幫助!

+0

所以在你的查詢字符串,你將有搜索= A&搜索= B?請明確提出問題 –

+0

確實如此。我會更新這個問題。 – MillerMedia

+0

這個插件將解析查詢字符串中的重複值到數組中。 http://benalman.com/code/projects/jquery-bbq/docs/files/jquery-ba-bbq-js.html#jQuery.deparam.querystring – Greg

回答

3

這應該做的伎倆:

var params = location.search.substr(1).split('&'), 
    results = {}; 

for(var i = 0; i < params.length; i++) 
{ 
    var temp = params[i].split('='), 
     key = temp[0], 
     val = temp[1]; 

    results[key] = results[key] || []; 
    results[key].push(val); 
} 

console.log(results); // { search: ["a", "b"] } 
0

//讀取頁面的URL GET變量並返回它們作爲關聯數組。

function getUrlVars() 
{ 
    var vars = [], hash; 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
    for(var i = 0; i < hashes.length; i++) 
    { 
     hash = hashes[i].split('='); 
     if(typeof vars[hash[0]]=='undefined'){ 
     vars.push(hash[0]); 
     vars[hash[0]] = [hash[1]]; 
    }else{ 
      vars[hash[0]].push(hash[1]); 
    } 
    } 
    return vars; 
} 

你可以找到演示here