2012-06-01 19 views
17

我試圖在Sinatra應用程序中編寫基於JSON的Web API。我想發佈一個JSON對象作爲帖子正文(具有適當的內容類型集),但我很掙扎。使用jQuery將POST body設置爲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) { 

}); 

如何做到這一點的任何指針?我的目標是我的末日做類似下面的

post "/api/user/create" do 
    js = JSON.parse(request.body.read) 
    # do something with the js object… this works when POSTing from Cocoa 
end 

回答

48

的過程數據參數添加到您的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

+2

請注意,processData是可選的。 –

相關問題