序列化表单但复选框数组转换为逗号分隔

时间:2016-03-15 20:57:17

标签: javascript jquery html

我有这样的表格:

<form id="filter_form">
   <select name="type">
      <option value="second">second</option>
   </select>
   <input type="checkbox" name="city[]" value="new_york" />
   <input type="checkbox" name="city[]" value="washington" />
</form>

和js中的这个事件:

    $('#filter_form').on('change', function () {
        $.ajax({
            url: "properties",
            method: 'GET',
            data: $("#filter_form").serialize(),
            success: function(result){
            }
        });
    });

此时网址的构建方式如下:

properties?transaction_type=second&city%5B%5D=new_york&city%5B%5D=washington

但我需要

properties?transaction_type=second&city=new_york,washington

如何进行此加入?

更新编辑:

这种方法对我有帮助,但我找不到实施的方法:

array.map(function() { 
    return this.value; 
}).get().join(',');

2 个答案:

答案 0 :(得分:0)

您不需要[],因为它们在此上下文中没有任何语义含义。它们也是重复的,最好有独特的变量。

删除这些内容以启动并替换为city1city2

这是一个_GET请求,您可以通过city1city2从服务器访问这些值。

如果您希望将它们合并到cities

您可以在JS的客户端编写脚本,将它们组合成一个键/值对。

答案 1 :(得分:0)

您可以在网址

中添加查询字符串
properties?transaction_type=second&city=new_york,washington

var data = 'transaction_type=' + <select_value> + '&city=' + <city_values>;
$('#filter_form').on('change', function () {
    $.ajax({
        url: "properties?" + data,
        method: 'GET',
        success: function(result){
        }
    });
});