2011-02-01 57 views
0

我實現了一個JavaScript函數,它檢索通過GET表單發送的變量。但是,我有多個選擇下拉菜單,使用GET時,所選的每個選項都會作爲不同的參數發送。請看下面的多個選擇:使用GET檢索多重選擇

   <select multiple="multiple" name="currencies"> 
        <option id="option1" value="option1">Option 1</option> 
        <option id="option1" value="option2">Option 2</option> 
        <option id="option3" value="option3">Option 3</option> 
       </select> 

當我選擇兩個或所有這些項目,這是GET網址:

http://example.com/mypage.html?currencies=option1&currencies=option2 

因此,當它分裂的JavaScript函數只獲得了第一個選項當遇到一個&字符串時,這是在找到另一個元素時所需要的字符串。

有沒有辦法解決這個問題?我需要的GET網址是這樣最好:

http://example.com/mypage.html?currencies=option1,option2 

這是使用JQuery的JS功能:

<script> 
function getQueryVariable(variable) { 
    var query = window.location.search.substring(1); 
    var vars = query.split("&"); 
    for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable) { 
     return pair[1]; 
    } 
    } 

} 
</script> 
+0

的GET URL格式是一個web標準 - 它的工作原理無處不在。您所要求的替代品可能會與JS一起被黑客攻擊,但@David指出最好讓您的處理JS代碼與標準一起工作。 – Rudu 2011-02-01 16:27:13

回答

3

功能只需要足夠聰明,發現重複和適當地處理它們。

例如:

var QueryString = function() { 
    // This function is anonymous, is executed immediately and 
    // the return value is assigned to QueryString! 
    var query_string = {}; 
    var query = window.location.search.substring(1); 
    var vars = query.split("&"); 
    for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 
       // If first entry with this name 
    if (typeof query_string[pair[0]] === "undefined") { 
     query_string[pair[0]] = pair[1]; 
       // If second entry with this name 
    } else if (typeof query_string[pair[0]] === "string") { 
     var arr = [ query_string[pair[0]], pair[1] ]; 
     query_string[pair[0]] = arr; 
       // If third or later entry with this name 
    } else { 
     query_string[pair[0]].push(pair[1]); 
    } 
    } 
     return query_string; 
}(); 
+0

看起來不錯。我會試試看。謝謝 – seedg 2011-02-01 16:27:44