Side navigation
#12937 closed feature (plugin)
Opened November 21, 2012 01:50PM UTC
Closed November 21, 2012 05:53PM UTC
Last modified December 29, 2012 06:18AM UTC
Add a $.fn.serializeJSON
Reported by: | roche.jul@gmail.com | Owned by: | |
---|---|---|---|
Priority: | undecided | Milestone: | None |
Component: | unfiled | Version: | 1.8.3 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
Hi,
Sometimes, we need to convert the data from a form into JSON to send it with Ajax.
I've put now in my projects a code which can do this feature:
#!js /** * With this approach, we can serialize data (from a form for example) as a JSON object ! */ $.fn.serializeJSON = function () { var o = {}; var a = this.serializeArray(); // Retrieve data $.each(a, function () { if (o[this.name] !== undefined) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ""); } else if(this.name.match(/\\[\\]$/g)){ o[this.name] = []; o[this.name].push(this.value || ""); } else { o[this.name] = this.value || ""; } }); // Now clean parameters name for(var name in o){ if(name.endWith("[]")){ o[name.replace(/\\[\\]$/g, "")] = o[name]; delete o[name]; } } return o; };
An example of use:
#!js $.ajax( "/mail", { method: "POST", contentType: "application/json", processData: false, data: JSON.stringify($("form:first").serializeJSON()) } );
Hope that can helped
Cheers
Julien Roche
Attachments (0)
Change History (3)
Changed November 21, 2012 01:54PM UTC by comment:1
Changed November 21, 2012 05:53PM UTC by comment:2
resolution: | → plugin |
---|---|
status: | new → closed |
Looks like a great plugin. The official jQuery plugin site will be launching soon and you could add it there.
Changed December 29, 2012 06:18AM UTC by comment:3
I think this should be core. I don't think there are many use cases for serializeArray (yet this is core) but there are many, many use cases for serializeJson (yet this must be a plugin).
The main use case is servers-side AJAX data-biding. Grails for example can databind JSON object, but not the native name/value array that serializeArrray can. I've in fact never used serializeArray before, only plugins.
:)
Oups, I mean for my example: