2011-02-01 53 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