【发布时间】:2014-10-25 19:14:53
【问题描述】:
我有一个工作代码,其中不需要返回值的 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,我只需要客户端的值。
【问题讨论】:
-
如果您使用浏览器开发工具检查响应,您是否看到任何带有预期 json 的响应?控制台窗口中的任何 JavaScript 错误怎么办?
-
实际上,当我在控制台部分和响应选项卡中查看 firebug 时,我确实看到了 json 响应!所以看起来响应已经到来了——但是为什么
done不火呢?我应该使用另一个回调吗? -
我喜欢
$.get函数,它很短而且对我总是有效,试试看:$.get(url, function(response) { alert("got it!"); });- 你只需要在调用它之前设置url变量 -
在你的情况下也可以尝试
success回调,看看它是否会触发。 -
您的建议都不起作用....尝试了获取快捷方式和成功回调:(
标签: javascript jquery ruby-on-rails ajax