Ruby on rails Rails 3中的Ajax成功事件

Ruby on rails Rails 3中的Ajax成功事件,ruby-on-rails,ajax,ruby-on-rails-3,jquery,ruby-on-rails-3.2,Ruby On Rails,Ajax,Ruby On Rails 3,Jquery,Ruby On Rails 3.2,我是纽贝。我有一些链接可以对服务器进行ajax查询: <%= link_to g.name, g, :class => 'link link-to-gallery', :remote => true %> “链接到图库”,:remote=>true%> 从分部加载数据的JS视图: $('#content').html('<%= escape_javascript render("layouts/galleries/show") %>'); $('#con

我是纽贝。我有一些链接可以对服务器进行ajax查询:

<%= link_to g.name, g, :class => 'link link-to-gallery', :remote => true %>
“链接到图库”,:remote=>true%>
从分部加载数据的JS视图:

$('#content').html('<%= escape_javascript render("layouts/galleries/show") %>');
$('#content').html('');
以及与模型一起操作并呈现html和js的控制器:

class GalleriesController < ApplicationController def show @galleries = Gallery.all @gallery_to_show = Gallery.find(params[:id]) respond_to do |format| format.html format.js end end end 类GalleriesController<应用程序控制器 def秀 @画廊 @gallery\u to\u show=gallery.find(参数[:id]) 回应待办事项|格式| format.html format.js 结束 结束 结束 Ajax工作正常,但我尝试在Ajax完成后放置回调:

jQuery(function() { $(".link-to-gallery").bind("ajax:complete", function() { alert(1) }); }); jQuery(函数(){ $(“.link to gallery”).bind(“ajax:complete”,function()){ 警报(1) }); }); 警觉永远不会出现。我做错了什么?Rails版本是3.2.11,Ruby版本是1.9.3p194

更新:当我使用此代码时

jQuery(function() { $(".link-to-gallery") .on("ajax:before", function () { alert("before") }) .on("ajax:complete", function() { alert("complete") }); }); jQuery(函数(){ $(“.link to gallery”) .on(“ajax:before”,函数(){ 警报(“之前”) }) .on(“ajax:complete”,function()){ 警报(“完成”) }); });
“之前”警报开火,但仅一次。如果我再按一下,我什么也得不到。但是ajax仍然有效。

我认为问题在于您的控制器方法没有用成功状态消息200响应异步调用

试试这个

def显示
@画廊
@gallery\u to\u show=gallery.find(参数[:id])
回应待办事项|格式|
format.html{:status=>200}
format.js{:status=>200}
结束
结束
如果这不起作用,试试这个

def显示
@画廊
@gallery\u to\u show=gallery.find(参数[:id])
回应待办事项|格式|
format.html{:status=>:ok}
format.js{:status=>:ok}
结束
结束

看来我是瘸子,但足够聪明来解决这个问题。我有以下链接:

<%= link_to g.name, g, :class => 'link link-to-gallery', :remote => true %>
“链接到图库”,:remote=>true%>

在ajax之后重新渲染的部分。因此,连接到这些链接的回调函数在ajax之后被清除。因此,我将链接从这个部分中删除,它现在可以工作了。

您是否尝试在jQuery 1.7+中首选的机制上使用
?您的回调代码是否被js视图中的调用覆盖?大卫·牛顿也提出了一个很好的观点。您应该在
上使用
而不是jquery的
bind
来处理事件。尝试了此操作。和“绑定”一样。但我有一些新信息,你确定吗?我从不需要手动设置OK响应或状态。我不能100%确定Rails是否默认返回OK状态。但我知道一个事实,即只有在返回OK或Fail状态时才会执行
ajax:complete
。所以尝试一下也无妨。