Trying to send json. Here's my function:
var object = ... ; $.ajax({ type: 'POST', url: '<url>', contentType: 'application/json; charset=utf-8', dataType: 'json', data: object });
But whenever I check Chrome, it always sends it as query params:
Request Payload: startDate=Wed+Dec+19+2012+19%3A00%3A00+GMT-0500+(EST)&endDate=Thu+Dec+20+2012+19%3A00%3A00+GMT-0500+(EST)&
How do I get it to send as JSON?
FormData is a bit different than JSON. It can't have nested data, it's just "key value". It can have multiple entries on one key, unlike JSON.
Formating data to JSON and making a POST request fromEntries() method. Using the JSON. stringify() method then format the plain form data as JSON. Specify the HTTP request method as POST and using the header field of the Fetch API specify that you are sending a JSON body request and accepting JSON responses back.
With JSON.stringify(object)
Sample:
$.ajax({ type: 'POST', url: '<url>', contentType: 'application/json; charset=utf-8', dataType: 'json', data: JSON.stringify(object) });
Note JSON.stringify is not supported in all browsers (http://caniuse.com/#feat=json ), in particular browsers IE7 and lower.
If you need to support this browsers too you can use this Javascript library: https://github.com/douglascrockford/JSON-js
Stringify using JSON.stringify(object)
Modify the data
field to:
... data: JSON.stringify(object), ...
The way you are doing it, IMO, jQuery sees the parameter as a dictionary (key-value pairs), and constructs a percentile-encoded string from that; and hence you see that output.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With