jQuery的 – 如何通过Ajax PUT JSON?

我正试图通过Ajax与jQuery的一些JSON格式的数据到服务器。 我的代码如下所示:

$.ajax({ type: "PUT", url: myURL, contentType: "application/json", data: {"data": "mydata"} }); 

但在服务器端,我收到一个data=mydatastring,而不是预期的JSON。 Firebug告诉我一样的。

错误在哪里?

我认为数据需要是一个string。 对象被转换为查询string,这是你在这里看到的。

您可以使用JSON.stringify(obj)方法将您的对象转换为string。 JSON对象的代码可以从以下url获得: https : //github.com/douglascrockford/JSON-js/blob/master/json2.js 。

另外,只要传递你使用的代码来创build一个string的对象,但我想这只是一个例子,你要编码一些你已经创build的对象。

如果您始终必须在您的应用程序中发送JSON,那么您可以在您的init的某个地方执行此操作,然后使用默认的$.ajax调用(如您的示例中所示),它将始终序列化为JSONstring,而不是Ajax默认查询string。

这里我使用上面提到的JSON对象:

 $.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) { },