$ .each循环填充json数组不起作用

时间:2014-04-26 23:34:21

标签: jquery arrays json push each

我正在尝试填充json数组以通过ajax发送到服务器。但是,它不起作用,我不确定为什么。这是代码:

    var form = $('.dash-name-form');


    form.serializeArray();

    input = [];

    $.each(form[0], function(){

        input.push({

            this.name : this.value
        });
    });

    console.log(JSON.stringify(input));

当我执行以下操作时,它会起作用:

    $.each(form[0], function(){

        input.push({

            'name' : this.name, 
            'value': this.value
        });
    });

但我真的很喜欢第一个块的更简化的输出,以便更好地使用我正在使用的后端框架(laravel的Input :: json() - > all()不能用于第二个)。

非常感谢所有建议。谢谢你们。

3 个答案:

答案 0 :(得分:0)

你需要注意像serializeArray之类的函数返回值的事实,如果你不将值存储在变量中或直接使用它,那么调用就没用了

试试这个。 它将为您提供普通对象

中表单的数据
var all =$('.dash-name-form').serializeArray(),
      data = {};

$.each (all, function (key, val){
      data [key]  = val;
});

console.log (data);

答案 1 :(得分:0)

试试这样:

$.each(form.serializeArray(), function(){
    var obj = {}; 
    obj[this.name] = this.value;
    input.push(obj);
});

答案 2 :(得分:0)

input.push({
    this.name : this.value
});

这看起来像是一个问题。 this.name将被解释为关键,而不是您所期望的(这与执行{"this.name": this.value}相同)。

var foo = "bar";
var x = {
  foo: "test"  
}

console.log(x);