jQuery - How to PUT JSON via Ajax?
Solution 1:
I think the data needs to be a String. Objects are converted to query strings which is what you are seeing here.
You can use the JSON.stringify(obj)
method to convert your Object to a String. The code for the JSON object is available from: https://github.com/douglascrockford/JSON-js/blob/master/json2.js.
Alternately, just pass the code you are using to create the object as a literal String, but I imagine this is just an example and you'll want to encode some object you've already created.
Solution 2:
If you always have to send JSON in your application, then you can just execute this somewhere in your init and then use default $.ajax
call as in your example, and it will always serialize as a JSON string instead of the Ajax default query string.
Here I use the JSON object mentioned above:
$.ajaxSetup({
contentType : 'application/json',
processData : false
});
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
if (options.data){
options.data=JSON.stringify(options.data);
}
});
Solution 3:
//url: this is a reference to the XML, where you need to define the mapping.
//<entry key="/getEmpDetails/transEfileGenerate.app">
//<bean class="com.adp.ems.framework.spring.MappingItem" p:delegate-ref="efilePageDelegate"
//p:action="passJSONObjectAndGetWebServiceOutput" />
//str1 is the input JSON that you need to pass... Ajax will automatically take care to get the response.
//</entry>
var kw = {
url : "getEmpDetails/transEfileGenerate.app",
timeout : 30000,
handleAs : "json",
sync: false,
putData : str1,
headers: { "Content-Type": "application/json"},
load : function(result) {
},