我试图为远程链接触发ajax:success回调。我在Rails 3.0.8和jQuery-rails 1.0.11上。我运行jquery生成器来安装javascripts。 jquery和jquery_ujs都包含在我的默认值中,我可以验证它们是否包含在页面中。Rails jQuery UJS回调没有触发
这里是我的javascript:
jQuery(function($) {
$("#deactivate")
.bind("ajax:success", function() {
alert("HELLO");
})
.bind("ajax:error", function() {
alert("GOODBYE");
}
);
});
链接:
= link_to 'Deactivate', activate_patient_path(patient), :id => 'deactivate', :class => "button button-red", :remote => true
Activate动作:
def activate
patient = Patient.find(params[:id])
patient.do_not_call = !patient.do_not_call
if patient.save
render :nothing => true
else
render :status => 500, :nothing => true
end
end
AJAX调用似乎是工作的罚款。该操作被触发,我可以看到数据库中的更改。但是,ajax回调没有被触发。我无法让他们工作。我可以让其他事件(如点击)完美工作。
如果我在Firebug调试rails_ujs我看到下面的代码从Rails的AJAX块跑:
success: function(data, status, xhr) {
element.trigger('ajax:success', [data, status, xhr]);
}
我难倒。有任何想法吗?
如果我执行 element = $(“#activate”); element.trigger('ajax:success'); 在控制台我可以得到回调触发。出于某种原因,它只是不适用于UJS。 – anthonator
使用Firebug,如果我在rails_ujs中的element.trigger('ajax:success',[data,status,xhr])行放置断点,然后将$(“#deactivate”)绑定到ajax:停止回调时成功会触发。当我点击链接直到刷新页面时,回调将继续正确触发。看起来$(“#deactivate”)与触发器正在执行的元素不是相同的引用。 – anthonator