Rails远程和jquery ajaxStop。

问题描述 投票:0回答:1

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做到这一点吗?我应该使用的正确事件是什么?

javascript jquery ruby-on-rails ajax
1个回答
0
投票

没有 .ajaxStop 是jquery在所有ajax请求完成后的回调。Rails ajax:stopped 当一个ajax请求被停止时,事件就会被触发。

如果你想做一些自定义的事情,你可以监听一下 ajax:beforeSend 事件,并递增当前活动的ajax请求的全局计数器,并将当前活动的ajax请求和 ajax:complete 事件来递减该计数器。在你递减计数器后,检查if == 0来运行你的代码。但那只会计算rails生成的ajax请求,你应该可以使用jQuery的方法来计算所有jquery的ajax请求。

© www.soinside.com 2019 - 2024. All rights reserved.