Jquery 将同名变量传递给get
我有以下问题。我有一个多选框。我想从multi-select读取所有选择的变量,并通过HTTP Get传递它们Jquery 将同名变量传递给get,jquery,forms,Jquery,Forms,我有以下问题。我有一个多选框。我想从multi-select读取所有选择的变量,并通过HTTP Get传递它们 ajax: { url: wwwFullDir + 'api/statistics/', data: function (d) { var data = $('#form-filter').serializeArray(), filter = {}; { d[d
ajax: {
url: wwwFullDir + 'api/statistics/',
data: function (d) {
var data = $('#form-filter').serializeArray(), filter = {};
{
d[data[i].name] = data[i].value;
console.log(data[i].name + "=" + data[i].value);
}
}
}
这是我得到的输出
filter[company] = 1
filter[company] = 2
filter[company] = 3
到目前为止,一切都很好,但问题是jquery只将一个公司ID传递给get查询,因为变量名相同:
/api/statistics/?filter[company]=3
应该是:
/api/statistics/?filter[company]=1&filter[company]=2&filter[company]=3
知道我做错了什么吗?谢谢 最好的办法是将其设置为逗号分隔的列表:
filter[company]=1,2,3
在捕获脚本中,将其更改为数组。如果您使用的是PHP,则可以执行以下操作:
$filter = $_GET["filter[company]"];
$companies = explode(",", $filter);
// returns array(1, 2, 3)
然而:我做了一些研究,结果表明,通过将$.ajax()
的传统
选项设置为真
,您应该能够做到这一点:
$.ajax({
url: wwwFullDir + 'api/statistics/',
data: function(d){
// retrieve data
},
traditional: true
});
jQuery中有更多关于传统序列化的内容。使用逗号分隔的列表可以吗?如
过滤器[公司]=1,2,3
?此/api/statistics/?过滤器[公司]=1和过滤器[公司]=2和过滤器[公司]=3
错误,过滤器[公司]
将被分配最后一个值(3
)。加入,
或创建url,如/api/statistics/?filter[company][]=1&filter[company][]=2&filter[company][]=3
,在这里您将有$\u GET[company]
作为响应的数组库@如果我将变量重命名为filter[company][],jquery仍然只放置filter[company][]=3,而不是剩余的ID。变量名保持不变,并按相同方式分配了3次。Purag的回答解决了我的问题,作为回答,我会接受的谢谢。