从序列化的表单复选框创建值对

时间:2014-11-26 22:36:01

标签: javascript jquery ajax

我需要在ajax data属性中创建一个要使用的变量。输出需要看起来像这样:

data: { brand: 1, brand: 4 }

我有几个复选框,具体取决于用户点击的内容我想要更改列表..目前我有这个:

$('body').on('change','form[name=checkboxes] input',function(){

var result = [];
$.each( $('form[name=checkboxes]').serializeArray(), function() {
    result.push({
        name: this.name,
        value: this.value
    });
});

console.log(result);

$.ajax({
    type: "POST",
    url: "/echo/html/",
    data: { brand: 1, brand: 4 }
}).done(function( data ) {

});

});

但结果会输出对象。

image of the result I created

有没有人有任何建议,我是否在正确的轨道上?

我已经创建了一个帮助http://jsfiddle.net/samstimpson/hzy9jxve/

的JS小提琴

修改

我的目标是建立这个"数据:{品牌:1,品牌:4}"动态。如果用户点击了一大堆复选框,我最终希望将列表传递给ajax数据值。我上面所做的可能不正确,我正在寻找一种方法。

2 个答案:

答案 0 :(得分:2)

你需要json是非法的,因为品牌领域重复两次(??)

我为你在jsFiddle中创建了一个修复程序:http://jsfiddle.net/ymzrocks/hzy9jxve/1/

var result = {}, i = 1;
$.each( $('form[name=checkboxes]').serializeArray(), function() 
{
    result[this.name + i] =  this.value ; i++;
});

它基本上将品牌领域转变为品牌1,品牌2,......等

我真的认为你应该使用数组或改写你的问题

答案 1 :(得分:1)