【问题标题】:Setting the POST-body to a JSON object with jQuery使用 jQuery 将 POST-body 设置为 JSON 对象
【发布时间】:2012-06-01 21:10:07
【问题描述】:

我正在尝试在 Sinatra 应用程序中编写基于 JSON 的 Web API。我想发布一个 JSON 对象作为帖子正文(设置正确的内容类型),但我很挣扎。

在 Cocoa 中,我会做类似的事情

[mutableHTTPRequest setHTTPBody:dataRepresentationOfJSONObject];

内容类型设置为 JSON,然后将 HTTP 正文作为 JSON 对象发布。我正在尝试用 jquery 来做到这一点。到目前为止,我能做的最好的事情就是将 JSON 对象转换为普通样式的 key=value&… 样式的帖子正文,而这不是我所追求的。

我的 Javascript:

var data = { "user" : "me!" };
$.ajax({
    type: "POST",
    url: "/api/user/create",
    contentType: 'application/json',
    data: data,
    success: function(r) {

});

关于如何做到这一点的任何指示?我的目标是让我的 Sinatra 执行以下操作

post "/api/user/create" do
    js = JSON.parse(request.body.read)
    # do something with the js object… this works when POSTing from Cocoa
end

【问题讨论】:

    标签: javascript jquery json


    【解决方案1】:

    将 processData 参数添加到您的 ajax 请求并将其设置为 false。此外,您需要对对象进行字符串化以将其转换为 JSON。

    var data = { "user" : "me!" };
    $.ajax({
        type: "POST",
        url: "/api/user/create",
        processData: false,
        contentType: 'application/json',
        data: JSON.stringify(data),
        success: function(r) {
        }
    });
    

    JSON.stringify 不能在旧版本的 IE 中工作,除非你实现它。 http://json.org

    【讨论】:

    • 注意,processData 是可选的。
    猜你喜欢
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多