一尘不染

使用jQuery将POST主体设置为JSON对象

json

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

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

[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

阅读 301

收藏
2020-07-27

共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

2020-07-27