當用戶點擊一個特定的項目,我用jQuery's post method更新數據庫中的東西:如何在Rails中失敗Ajax請求?
$.post("/posts/" + post_id + "/update_something",
{ some_param: some_value },
success_handler);
其中update_something
看起來是這樣的:
def update_something
post = Post.find(params[:id])
post.update_attributes(:some_field => params[:some_param])
render :nothing => true
end
的問題是,如果update_attributes
失敗,請求仍然成功並執行success_handler
。
如果update_attributes
失敗導致success_handler
不會執行,我怎麼會導致請求失敗?
謝謝!我不熟悉jQuery的「成功」和「錯誤」方法。試圖尋找文檔,但沒有成功。你能提供一個指針嗎? – 2012-02-16 05:28:36
+1您也可以返回成功/失敗標題。你在Rails中的最後一行看起來像是「頭部成功」? :ok::internal_server_error',其中'head:ok'將返回狀態200,'head:internal_server_error'將返回狀態500. – Substantial 2012-02-16 05:31:14
Misha:'post','get'和'ajax'返回一個jqXHR對象,它是(很差)[記錄在這裏](http://api.jquery.com/jQuery.ajax/#jqXHR)。仔細閱讀,我發現'error'和'success'已被棄用,現在你應該使用[Deferred](http://api.jquery.com/category/deferred-object/)的'done'和'fail' 。我已經更新了我的代碼以反映這一點,並且合併了@ gg_s的建議,這是一個很好的提示。 – 2012-02-16 05:38:23