Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
I search a lot but didn't find perfect difference between
serialize
and
serializeObject
method of jquery.
Please help me to understand this.
–
–
–
As you can see
here
,
serializeObject
is not a native jQuery Method and thus only exist if you or a previous programmer of the site inserted it. As is mentioned in an
Q&A found here
, this function was probably found when someone working on your site "
searched a way to serialize a form
" and found the following extension:
$.fn.serializeObject = function()
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
return o;
Look for serializeObject somewhere in your JS, but note, it's probably not needed as it appears to do the same thing as $.fn.serialize.
Upon further review, I found it's not the exact same. serializeObject method found at other Q&A will serialize a form's value's as an Object, while serialize encodes the values as a string for submission.
Please take note, if you want something like serailizeObject that is native to the jQuery Core, then please see serializeArray.
The result will be slightly different in that serializeArray will make an array of objects of your form values. each Object having { name: "", value: "" }
Please see Developer Tools Console in example.
–
–
I have done some digging here on stackoverflow on serializing form to json object and I ended up finding this method
$.fn.serializeObject = function()
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
return o;
yet it doesn't fit on what I was working on. So I created my own plugin. If your interested you might what to check this out https://github.com/citnvillareal/serializeObject
Vanilla JS for .serialize(), .serializeArray() and .serializeObject() for those coming here for that.
let form = document.querySelector("form");
let params = new URLSearchParams(new FormData(form)).toString(); //query string, e.g. value=name&username=john
//object
let obj = {};
params.split("&").map(function (q){let a = decodeURI(q).split("=");obj[a[0]] = a[1]});
//array
let arr = params.split("&").map(function (q){let a = decodeURI(q).split("="); return {name:a[0],value:a[1]}});
An object will look like:
name: "value",
username: "john"
and the array would be
name: "name",
value: "value"
name: "username",
value: "john"
Personally, I much prefer using objects as it lets you easily modify the data and it's ready to be sent to a server. On the other hand, if you send an array to the server, you will need additional server-side code to convert that into an object, or to find the right values.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.