使用jQuery将POST主体设置为JSON对象
我正在尝试在Sinatra应用程序中编写基于JSON的Web API。 我想POST一个JSON对象作为post正文(具有正确的内容类型集)但我正在努力。
在Cocoa,我会做类似的事情
[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) { });
有关如何做到这一点的任何指示? 我的目标是让我的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
,否则JSON.stringify
将无法在旧版本的IE中使用。 http://json.org