在get上传递具有相同名称的变量

时间:2014-11-28 08:28:59

标签: jquery forms

我有以下问题。我有一个多选框。我想从多选中读取所有选定的变量,并通过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

任何想法我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

最好的办法是将其设为以逗号分隔的列表:

filter[company]=1,2,3

在捕获脚本中,将其更改为数组。如果你正在使用PHP,你可以这样做:

$filter = $_GET["filter[company]"];
$companies = explode(",", $filter);
// returns array(1, 2, 3)

但是:我做了一些研究,结果证明你可以通过将traditional的{​​{1}}选项设置为$.ajax()来实现这一目标:

true

jQuery here中的传统序列化还有更多。