如何在JQuery中访问serializeArray创建的值?

bar*_*art 25 jquery serializearray

我有这个HTML:

<form id='myform'>
<input name='title' value='foo'/>
</form>
Run Code Online (Sandbox Code Playgroud)

我从它创建一个对象数组,如下所示:

var dataArray = $("#myform").serializeArray();
Run Code Online (Sandbox Code Playgroud)

现在我如何访问dataArray中的'title'?这不起作用:

alert(dataArray['title']);
alert(dataArray['title'].val());
Run Code Online (Sandbox Code Playgroud)

Jas*_*son 30

与Nick发布的相似,但有点清洁

var dataArray = $("#myform").serializeArray(),
    dataObj = {};

$(dataArray).each(function(i, field){
  dataObj[field.name] = field.value;
});
Run Code Online (Sandbox Code Playgroud)

然后以相同的方式访问

alert(dataObj['title']);
Run Code Online (Sandbox Code Playgroud)


Nic*_*ver 29

您可以循环,因为@Tom有 ...或者如果您访问多个,请更高效并循环一次,创建一个这样的对象:

var dataArray = $("#myform").serializeArray(),
    len = dataArray.length,
    dataObj = {};

for (i=0; i<len; i++) {
  dataObj[dataArray[i].name] = dataArray[i].value;
}
Run Code Online (Sandbox Code Playgroud)

然后您可以按照自己的意愿访问它,例如:

alert(dataObj['title']); //or alert(dataObj.title);
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下.


Tom*_*Tom 14

alert(dataArray[0].name);
alert(dataArray[0].value);
Run Code Online (Sandbox Code Playgroud)

所以:

for (i=0; i<dataArray.length; i += 1) {
    if (dataArray[i].name === "title") {
        // do something here...
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 你不是依赖于命令,名称是id,值是值,它们不是像你期望的那样在一个对象中,你需要遍历数组并在遇到它们时处理它们. (2认同)