How to get form data as a object in jquery

JavascriptJquery

Javascript Problem Overview


I have tried jQuery('#form_id').serialize(). This returns only the form data as a url encoded string. Is it possible to get the form data as an object?

Javascript Solutions


Solution 1 - Javascript

Have you tried "serializeArray"? That gives you an array of names and values. You could turn that into an object if you wanted to:

var paramObj = {};
$.each($('#myForm').serializeArray(), function(_, kv) {
  paramObj[kv.name] = kv.value;
});

(I'll have to check again to see what jQuery does with arrays; I think it encodes them as Javascript array values, but I'm not 100% sure.)

edit ah no, it doesn't set up multi-valued parameters as arrays - you get repeats of the same name. Thus, the make-an-object code should look like this:

var paramObj = {};
$.each($('#myForm').serializeArray(), function(_, kv) {
  if (paramObj.hasOwnProperty(kv.name)) {
    paramObj[kv.name] = $.makeArray(paramObj[kv.name]);
    paramObj[kv.name].push(kv.value);
  }
  else {
    paramObj[kv.name] = kv.value;
  }
});

(or something like that; could probably be squeezed a little.)

Solution 2 - Javascript

You may take a look at the serializeArray function:

$('#form_id').serializeArray()

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkevinView Question on Stackoverflow
Solution 1 - JavascriptPointyView Answer on Stackoverflow
Solution 2 - JavascriptDarin DimitrovView Answer on Stackoverflow