当rails控制器返回200 OK时,不会触发jquery ajax成功回调

时间:2012-09-11 19:53:25

标签: jquery ruby-on-rails

我正在做一个标准的ajax请求,我有一个rails控制器动作:

def up_vote
  resource.votes.increment!
  render :nothing => true
end

这不会触发我的jquery ajax成功回调---但它会触发statusCode:200回调,但我想使用成功而不是那样。铁路渲染文档说使用“head”而不是render:nothing =>是的,所以我试着做头:好的,但结果会相同。

如何让此方法触发成功回调?

3 个答案:

答案 0 :(得分:6)

我在使用Rails 3.2的head :ok样式响应时遇到了同样的问题。我通过在dataType: "json"电话中将dataType: "text"更改为$.ajax来解决此问题。

如果您指定需要JSON响应,jQuery似乎不会调用成功回调,但返回的数据不会验证为JSON。

这个问题给了我一些提示,我需要弄清楚:jQuery.ajax success callback function not executed

答案 1 :(得分:5)

我通过呈现json响应来修复此错误。render :json => { :success => "success", :status_code => "200" }

答案 2 :(得分:0)

老问题,但它在搜索引擎中很高,所以给它一个答案:)

你可以这样做:

def up_vote
  resource.votes.increment!
  render :nothing => true

  respond_to do |format|
    format.json  { render json: {} , status: 200 }
  end
end