Javascript 使用jQuery将POST正文设置为JSON对象

Javascript 使用jQuery将POST正文设置为JSON对象,javascript,jquery,json,Javascript,Jquery,Json,我正在尝试在Sinatra应用程序中编写基于JSON的web API。我想发布一个JSON对象作为POST主体(设置了适当的内容类型),但我正在努力 在可可中,我会做一些类似的事情 [mutableHTTPRequest setHTTPBody:dataRepresentationOfJSONObject]; 内容类型设置为JSON,然后将HTTP主体作为JSON对象发布。我正试图用jquery实现这一点。到目前为止,我所能做的最好的事情就是将JSON对象转换成一个普通样式的key=value

我正在尝试在Sinatra应用程序中编写基于JSON的web API。我想发布一个JSON对象作为POST主体(设置了适当的内容类型),但我正在努力

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

[mutableHTTPRequest setHTTPBody:dataRepresentationOfJSONObject];
内容类型设置为JSON,然后将HTTP主体作为JSON对象发布。我正试图用jquery实现这一点。到目前为止,我所能做的最好的事情就是将JSON对象转换成一个普通样式的
key=value&…
style post-body,这不是我想要的

我的Javascript:

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

});
有没有关于如何做到这一点的建议?我的目标是让我的辛纳屈做到如下

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中不起作用,除非您实现它

注意,processData是可选的。