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

时间:2010-11-21 06:48:31

标签: jquery serializearray

我有这个HTML:

<form id='myform'>
<input name='title' value='foo'/>
</form>

我从中创建一个对象数组:

var dataArray = $("#myform").serializeArray();

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

alert(dataArray['title']);
alert(dataArray['title'].val());

8 个答案:

答案 0 :(得分:27)

你可以循环访问,as @Tom has ...或者如果你访问多个,可以更有效率并循环一次,创建一个这样的对象:

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

for (i=0; i<len; i++) {
  dataObj[dataArray[i].name] = dataArray[i].value;
}

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

alert(dataObj['title']); //or alert(dataObj.title);

You can test it out here

答案 1 :(得分:26)

与Nick发布的相似,但更清洁

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

$(dataArray).each(function(i, field){
  dataObj[field.name] = field.value;
});

然后以相同的方式访问

alert(dataObj['title']);

答案 2 :(得分:13)

alert(dataArray[0].name);
alert(dataArray[0].value);

所以:

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

答案 3 :(得分:3)

运行console.log(dataArray);,然后打开属性检查器,并检查控制台。在Chrome中,您右键单击并选择“检查元素”,然后单击左下角的“&gt; =”查找图标,它是左起第二个。

在Firefox中你会安装firebug,并且有一个名为“Console”的标签

不确定它是否可用于IE,可能是开发人员工具中的内容(按 f12 ),但我不建议在IE中进行开发。

无论如何,这将以允许您导航和查看每个项目的值的方式列出对象。这样你就可以用它来破译如何访问这些值:)

祝你好运

答案 4 :(得分:3)

无论如何要添加它以帮助其他人。快速检查所有值的好方法。

var formdata = $( "#myform" ).serializeArray();
var formdata = JSON.stringify(formdata);
alert (formdata);

答案 5 :(得分:2)

将/ echo / print dataArray[0].name附加到div会给你'标题'

答案 6 :(得分:2)

在myDiv中警告输入serializeArray(注意::input选择器也将包含select和textarea标签!):

//alert(fData.length) // how many inputs got picked up 
var fData=$("#myDiv :input").serializeArray();
var msg=""; 
for(var i=0;i<fData.length;i++){
    var raKy=Object.keys(fData[i]); 
    msg+="\n"+raKy[0]+":"+eval("fData[i]."+raKy[0])+" "+raKy[1]+":"+eval("fData[i]."+raKy[1]); 
}
alert(msg);

答案 7 :(得分:0)

使用uderscore.js,我们可以这样做:

var serializedArray = $('form#spiderman-application').serializeArray();

var serializedObject = _.object(
  _.pluck(serializedArray, 'name'), 
  _.pluck(serializedArray, 'value')
)

console.log(serializedObject);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>

<form id="spiderman-application">
  <legend>Application Form</legend>
  <input name="./fname" value="Peter" />
  <input name="./lname" value="Parker" />
</form>

祝你好运...