javascript - 使用 jQuery 将 POST-body 设置为 JSON 对象

标签 javascript jquery json

我正在尝试在 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

最佳答案

将 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

关于javascript - 使用 jQuery 将 POST-body 设置为 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10857382/

相关文章:

javascript - 使用 Swiper JS slider - 我想将第一张幻灯片左对齐,并从屏幕外显示第二张幻灯片

javascript - 如何在 Javascript 中生成加密安全的伪随机数?

javascript - jQuery:append() 没有将任何元素插入到选择器中

javascript - 如何使用例如正则表达式从属性获取文本?

json - 如何正确解码 Golang 中的无键 JSON 数组?

javascript - Jquery/JSON 没有做我想做的事

javascript - 文档加载后如何加载这个 javascript 函数?

javascript - 安装 Material-ui v3.0.3 时 JSON 输入文件意外结束

Jquery Datatables,初始化后更改行回调

jquery - 这个简单的 jquery/json 函数缺少什么?