rails / jquery / ajax:完成回调未执行

时间:2014-10-25 19:14:54

标签: javascript jquery ruby-on-rails ajax

我有一个工作代码,其中一个不需要返回值的AJAX调用正常工作。

Javascript(实际上是coffeescript):

$.ajax({
      url: "/images/" + image_id + "/" + action,
      type: "GET",
      dataType: 'json'
    }).done( (response) ->
      alert("hello")
      )

在服务器端我有这个:

respond_to do |format|
  format.js {render nothing: true}
end

这很好用

但现在我需要返回一个值,所以我将服务器端更改为:

respond_to do |format|
      format.json {render :json => @image.quality}
end

这也很好,服务器端和客户端都没有错误 - 但“完成”回调永远不会执行。

我错过了什么?我搜索了很多文档,我对我发现的内容感到困惑。官方文档http://www.railscook.com/recipes/rails-view-controller-ajax-response-example/说使用模板渲染js但我不需要直接渲染javascript,我只需要客户端的值。

1 个答案:

答案 0 :(得分:0)

诅咒它。

问题是JSON格式不正确。

出于某种原因

format.json {render :json => @image.quality}

没有生成有效的json,实际上,不是完成的回调,但是错误回调会触发......(从我这边做的非常糟糕的做法,首先没有包含错误回调)

所以,如果我将其更改为

format.json {render json: @image}

我获得了有效的json和完成的回调激活......