使用GET检索多项选择

时间:2011-02-01 16:22:03

标签: javascript html get

我实现了一个javascript函数,它检索通过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 URL:

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

因此,javascript函数只获得第一个选项,因为它在&amp;遇到,当找到另一个元素时需要。

有解决方法吗?我需要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>

1 个答案:

答案 0 :(得分: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;
} ();