jQuery - How to PUT JSON via Ajax?
I am trying to put some JSON formatted data via Ajax with jQuery开发者_开发知识库 to a server. My code looks like this:
$.ajax({
type: "PUT",
url: myURL,
contentType: "application/json",
data: {"data": "mydata"}
});
But on the server-side, I receive a data=mydata
string, instead of the expected JSON. Firebug tells me the same.
Where is the error?
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.
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);
}
});
//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) {
},
精彩评论