2014-04-08 40 views
2

我有一個由多個過濾器組成的URL並且有相應的搜索條件,我無法改變這些URL的構建方式。獲取URL查詢字符串參數當存在多個使用Jquery或JS的同名的參數時

我知道如何獲取查詢字符串參數的情況下,我只是想獲得一個參數的值,但我似乎無法弄清楚如何將它們適當地關聯在一起。例如這裏是網址:

/AllItems.aspx?FilterName=FilterA&FilterMultiValue=*FilterASearchValue*&FilterName=FilterB&FilterMultiValue=*FilterBSearchValue*" 

我想從這個網址獲取值,這樣我可以與FilterA搜索值和準過濾器B與FilterB搜索值

回答

0
function getParamsFromUrl() { 
    var query = location.search.substr(1); 
    var params = query.split("&"); 
    var result = {}; 
    for(var i=0; i<params.length; i++) { 
    var item = params[i].split("="); 
    result[item[0]] = item[1]; 
    } 
    return result; 
} 
濾波器的關聯
2

你可以用降低做到這一點:

var u='/AllItems.aspx?FilterName=FilterA&FilterMultiValue=*FilterASearchValue*&FilterName=FilterB&FilterMultiValue=*FilterBSearchValue*' 

u.split(/[?&]/).reduce(function(a,b,c){ 
    var p=b.split("="), k=p[0], v=decodeURIComponent(p[1]); 
    if(!p[1])return a; 
    a[k]=a[k]||[]; 
    a[k].push(v); 
return a; 
}, {}) 

返回則params的,而不是字符串數組,允許同名PARAMS重複:

{ 
    "FilterName": [ 
     "FilterA", 
     "FilterB" 
    ], 
    "FilterMultiValue": [ 
     "*FilterASearchValue*", 
     "*FilterBSearchValue*" 
    ] 
} 
相關問題