【问题标题】:jQuery - How to PUT JSON via Ajax?jQuery - 如何通过 Ajax 放置 JSON?
【发布时间】:2009-11-17 14:29:56
【问题描述】:

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

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

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

哪里出错了?

【问题讨论】:

  • 你在服务器端使用什么?
  • 我使用需要 JSON 的 Couchdb。
  • AJAX PUT is 在所有主流浏览器中都可用。 HTTP PUT 不是。所以在这种情况下,使用 PUT 没问题(推荐,甚至)。
  • 添加选项 dataType: "json",可能会对您有所帮助。

标签: jquery ajax json


【解决方案1】:

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

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

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

【讨论】:

  • 如果@Juri 想要服务器上的 JSON,这就是他应该采用的方式。我一直在使用 json2.js 库,效果很好。
  • 如果 jQuery 能够像 POST 一样对数据进行字符串化,那就太好了。
【解决方案2】:

如果你总是需要在你的应用程序中发送 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);
    }
});

【讨论】:

    【解决方案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) {
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-07
      • 2013-01-09
      • 2021-08-06
      • 2014-02-26
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多