jQuery - 如何通过Ajax提供JSON?

时间:2009-11-17 14:29:56

标签: jquery ajax json

我试图通过带有jQuery的Ajax将一些JSON格式的数据放到服务器上。我的代码如下所示:

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

但是在服务器端,我收到一个data=mydata字符串,而不是预期的JSON。 Firebug告诉我同样的事情。

错误在哪里?

3 个答案:

答案 0 :(得分:52)

我认为数据需要是一个字符串。对象将转换为您在此处看到的查询字符串。

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

或者,只需传递您正在使用的代码来创建对象作为文字字符串,但我想这只是一个示例,您将要编码一些您已经创建的对象。

答案 1 :(得分:31)

如果您总是需要在应用程序中发送JSON,那么您可以在init中的某个位置执行此操作,然后使用默认的$.ajax调用,如示例所示,它将始终序列化为JSON字符串而不是Ajax默认查询字符串。

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

$.ajaxSetup({
    contentType : 'application/json',
    processData : false
});
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
    if (options.data){
        options.data=JSON.stringify(options.data);
    }
});

答案 2 :(得分:1)

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