Rails 5.2 和 gems 'jquery-rails', 'jquery-ui-rails'。
我正在尝试使用以下处理程序 .ajaxStop( handler )
如这里所述。https:/api.jquery.comajaxStop#ajaxStop-handler。
我在同一个页面上有多个rails(远程)表单。当一个按钮被点击时,所有的表单都被提交,所有的ajax调用都被成功地发送,并且每一个 .on("ajax:success")
事件被触发,对于每个表格。到目前为止,一切都很好。问题是我想在所有ajax调用完成后执行一些JS代码。
我尝试了下面的jquery文档中描述的方法。
$( document ).ajaxStop(function() {
console.log("test1");
});
我还试了这个,因为我在Rails文档上找到了这个事件的名字。https:/edgeguides.rubyonrails.orgworking_with_javascript_in_rails.html#rails-ujs-eventhandlers。 :
$(function() {
$( document ).on("ajax:stopped", function() {
console.log("test2");
});
});
没有运气。什么也印不出来。
有什么方法可以让我用rails做到这一点吗?我应该使用的正确事件是什么?
没有 .ajaxStop
是jquery在所有ajax请求完成后的回调。Rails ajax:stopped
当一个ajax请求被停止时,事件就会被触发。
如果你想做一些自定义的事情,你可以监听一下 ajax:beforeSend
事件,并递增当前活动的ajax请求的全局计数器,并将当前活动的ajax请求和 ajax:complete
事件来递减该计数器。在你递减计数器后,检查if == 0来运行你的代码。但那只会计算rails生成的ajax请求,你应该可以使用jQuery的方法来计算所有jquery的ajax请求。