我有这个问题,我使用serializearray()jQuery将Form的所有字段序列化为Json。
如果在输入中放置了name属性,则工作正常,但是如果我只想放置ID属性,则此方法无效。
好的函数按名称[名称类似:'#myformnameid']:
function formToJson(nameForm)
{
var jsonForm={};
var queryFrom = $(nameForm).serializeArray();
for (i in queryFrom) {
jsonForm[queryFrom[i].name] = queryFrom[i].value;
}
return jsonForm;
}
我尝试使用attr寻求ID解决方案。
function formToJson(nameForm)
{
var jsonForm={};
var queryFrom = $(nameForm).serializeArray();
for (i in queryFrom) {
jsonForm[queryFrom[i].attr("id")] = queryFrom[i].value;
}
return jsonForm;
}
任何的想法?
最佳答案
serializeArray
的作用是采用输入对象的形式,并将它们转换为javascript对象的数组。在documentation中,形式类似于
[
{
name: "a",
value: "1"
},
{
name: "b",
value: "2"
},
{
name: "c",
value: "3"
}
]
您可以像执行操作一样,通过名称或值遍历此数组,它将返回正确的数据。
您遇到的问题是您不再遍历实际元素,仅遍历这些元素中的数据。如果要遍历元素,则需要执行以下操作:
function formToJson(nameForm)
{
var jsonForm={};
$("input", $(nameForm)).each(function(index){
jsonForm[$(this).attr("id")] = this.value;
})
return jsonForm;
}