我实现了一个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¤cies=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>
答案 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;
} ();