How do I access values created by serializeArray in JQuery?

血红的双手。 提交于 2020-12-27 15:50:02

问题


I have this HTML:

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

And I create an object array from it like this:

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

Now how do I access 'title' in dataArray? This does not work:

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

回答1:


Similar to what Nick posted, but a little cleaner

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

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

Then access the same way

alert(dataObj['title']);



回答2:


You can either loop through, as @Tom has...or if you're accessing more than one, be a bit more efficient and loop once, creating an object like this:

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

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

Then you can access it like you want, for example:

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

You can test it out here.




回答3:


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

So:

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



回答4:


Run console.log(dataArray);, then open up the property inspector, and check the console. In Chrome, you'd right click and select "Inspect Element" and then click the ">=" looking icon in the bottom left, it's the second from the left.

In Firefox you'd install firebug and there's a tab called "Console"

Not sure if it's available in IE, probably something in the developer tools (press f12) but i wouldn't recommend developing in IE.

Anyway this will list out the object in a way that allows you to navigate and see the values of each item. That way you can then use this to decipher how to access the values :)

Good luck




回答5:


Adding this anyway to help others in future. Good way to quickly inspect all values.

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



回答6:


append/echo/print dataArray[0].name to a div will give you 'title'




回答7:


Alerting serializeArray of inputs in myDiv (note: the :input selector will include select and textarea tags as well!):

//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);



回答8:


With uderscore.js, this is how we can go about it:

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>

Good Luck...



来源:https://stackoverflow.com/questions/4236768/how-do-i-access-values-created-by-serializearray-in-jquery

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!