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