Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将同名变量传递给get_Jquery_Forms - Fatal编程技术网

Jquery 将同名变量传递给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

我有以下问题。我有一个多选框。我想从multi-select读取所有选择的变量,并通过HTTP Get传递它们

     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的回答解决了我的问题,作为回答,我会接受的谢谢。