How to send JSON instead of a query string with $.ajax?
javascript, jquery, json, query-string
Solution
You need to use `JSON.stringify` to first serialize your object to JSON, and then specify the `contentType` so your server understands it's JSON. This should do the trick:
$.ajax({
url: url,
type: "POST",
data: JSON.stringify(data),
contentType: "application/json",
complete: callback
});
Note that the `JSON` object is natively available in browsers that support JavaScript 1.7 / ECMAScript 5 or later. If you need legacy support you can use json2.
Problem
Can someone explain in an easy way how to make jQuery send actual JSON instead of a query string? ``` $.ajax({ url : url, dataType : 'json', // I was pretty sure this would do the trick data : data, type : 'POST', complete : callback // etc }); ``` This will in fact convert your carefully prepared JSON to a query string. One of the annoying things is that any `array: []` in your object will be converted to `array[]: []`, probably because of limitations of the query sting.