The Missing Parameter of jQuery.post
When coding JavaScript that requires a lot of DOM manipulations, jQuery no doubt is my favorite JavaScript framework. Surprisingly, with file size of 26KB (packed distribution), it supports Ajax along with many other handy features.
If you've previously used jQuery's Ajax API, you probably noticed that there's a jQuery.getJSON() function call that grabs the server response from a given URL and parses it into a JSON object. However, you couldn't find the corresponding method from online documentation for post request, namely jQuery.postJSON.
I know that I can do "postJSON" with jQuery.ajax or simply use eval() function to parse the returned response, but I am not satisfied with either of them. As being fastidious, I want to have something that is as elegant as getJSON(). After spending some time on the source code, I finally found some workaround that I can live with. It turns out that the online documentation of jQuery is a little bit outdated because it shows jQuery.post only accept three parameters: jQuery.post( url, [data], [callback] , in fact jQuery.post accepts a fourth parameter which is the data type. That means I can do something like:
var callback = function (data, textStatus) {
//data now will be a JSON object instead of plain text
};
jQuery.post( url, data, callback, "json") ;
Indeed, jQuery.get takes a fourth parameter as well:
get: function( url, data, callback, type ) {
...
}
and jQuery.getJSON is simply a jQuery.get with the fourth parameter as "json":
getJSON: function( url, data, callback ) {
return jQuery.get(url, data, callback, "json");
}
Hopefully jQuery team can update their documentation soon, as it causes unnecessary confusions.
More interesting posts ...
Leave a Comment
If you would like to make a comment, please fill out the form below.
If you want to post source code, please wrap it with <pre> and </pre>


This is what "jQuery" said to the postJSON idea long ago:
http://dev.jquery.com/ticket/197
Great!
Thank you very much, I was looking for .postJSON since the first time I used jQuery. :)
Many thanks to this note, came in very handy at the first place when I typed "jquery post callback json" into Google.