我有这个问题,我使用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;
}

08-08 06:13