当用户点击一个特定的项目,我用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