2013-01-17 82 views
-3

可能重複:
How can I get query string values?解析變量

我有以下查詢字符串:

"active_tab=delivered&active_tab=all&active_tab=delivered&active_tab=outstanding 
&active_tab=delivered&active_tab=outstanding&active_tab=all&active_tab=delivered&active_tab=outstanding&title_filter=conformance&title_filter=delivering&title_filter=packaging 
&title_filter=delivering&title_filter=all&title_filter=delivering&title_filter=all&title_filter=packaging&title_filter=conformance&title_filter=packaging 
&title_filter=delivering&title_filter=packaging&title_filter=ordered" 

我將如何解析最終title_filter(「有序「)和active_tab(」交付「)從上面的查詢字符串?此外,如果查詢字符串變量不存在,有它= ""

+0

這是所有的查詢字符串?它有多個相同的密鑰! –

+1

'explode(「&」,$ array);'while while循環數組; 'explode(「=」,$ element);'第一個數組的每個元素......用令牌做東西... – crush

+0

我寫了這段回來,你可以看看它是否適用於你:https:// gist.github.com/3528917 –

回答

4
var query = {}; 

var largeString = "active_tab=delivered&active_tab=all&active_tab=delivered&active_tab=outstanding&active_tab=delivered&active_tab=outstanding&active_tab=all&active_tab=delivered&active_tab=outstanding&title_filter=conformance&title_filter=delivering&title_filter=packaging&title_filter=delivering&title_filter=all&title_filter=delivering&title_filter=all&title_filter=packaging&title_filter=conformance&title_filter=packaging&title_filter=delivering&title_filter=packaging&title_filter=ordered"; 

largeString.split('&').forEach(function(keyValue){ 
    var kvp = p.split('='); 
    query[kvp[0]]= kvp[1]; 
}); 

,如果你需要支持數組:

largeString.split('&').forEach(function(keyValue){ 
    var kvp = keyValue.split('='); 

    if(kvp[0] in query){ 
     if(typeof(query[kvp[0]] === 'string')){ 
      query[kvp[0]] = [query[kvp[0]]]; 
     } 
     query[kvp[0]].push(kvp[1]); 
    }else{ 
     query[kvp[0]] = kvp[1]; 
    } 
}); 
0

我修改了查詢字符串來刪除重複項,然後我做:

var active_tab = window.location.search.split('active_tab=')[1].split('&')[0] 
var title_filter = window.location.search.split('title_filter=')[1].split('&')[0]