2013-02-04 146 views
0

可能重複:
How can I get query string values?如何設置逗號分隔。字符串作爲參數?

香港專業教育學院一個函數調用,比如:

var ex = _.where(obj, {param1:0,param2:1}); 

的正常工作,所有後面的代碼。

檢查我的網址,並採取了參數,這些信息保存到一個數組:

var query = window.location.search.substring(1); 

    var vars = query.split("&"); 

    var testParamter = vars.toString().replace(/=/g,':'); 

,通過使用的console.log(testParamter)返回;結果如下:

param1:0,param2:1 

,但我不能插入卻把VAR testParamter到我的函數調用:

var ex = _.where(obj, {testParamter}); 

,因爲它是一個字符串,我不能用的eval韓德爾它()。所以誰能告訴我請正確的方式來解決它?

感謝

+2

你已經有了一個[XY-問題(http://meta.stackexchange.com /問題/ 66377 /什麼,是最XY-問題)。看到重複[我怎樣才能得到查詢字符串值?](http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values) – Bergi

+0

你想要testParamter是什麼? –

回答

0

迭代從查詢字符串值,並根據這些值創建一個對象:

var query = window.location.search.substring(1), 
    vars = query.split("&"), 
    params = {}; 

$.each(vars, function(k,v) { 
    var arr = v.split('='); 
    params[ decode(arr[0]) ] = decode(arr[1]); 
}); 

var ex = _.where(obj, params); 

function decode(s) { 
    return decodeURIComponent(s.replace(/\+/g, " ")); 
} 
+0

不要忘記[解碼](http://stackoverflow.com/a/2880929/1048572)參數名稱和值。 – Bergi

+0

@Bergi - 聽起來不錯,主意不錯!不想複製答案,並且該鏈接適用於任何感興趣的人,但是我將添加decodeURI,而不用正則表達式替換等。 – adeneo

+0

用空格替換'+'非常重要,我會說。 – Bergi