我正在尝试填充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()不能用于第二个)。
非常感谢所有建议。谢谢你们。
答案 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);