Рельсы удаленные и jquery ajaxStop - PullRequest
0 голосов
/ 19 апреля 2020

Rails 5.2 и gems 'jquery -rails', 'jquery -ui-rails'

Я пытаюсь использовать следующий обработчик .ajaxStop( handler ), как описано здесь: https://api.jquery.com/ajaxStop/#ajaxStop -handler

У меня есть несколько рельсовых (удаленных) форм на одной и той же странице. При нажатии кнопки все формы отправляются, все вызовы ajax успешно отправляются, и запускается каждое из событий .on("ajax:success") для каждой из форм. Все идет нормально. Проблема в том, что я хочу выполнить код JS, как только ВСЕ вызовы ajax уже завершены.

Я попытался выполнить следующее, как описано в jquery документах:

$( document ).ajaxStop(function() {
    console.log("test1");
});

Также попробовал это, поскольку я нашел это имя события на странице документации Rails https://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#rails -u js -event-handlers :

$(function() {
  $( document ).on("ajax:stopped", function() {
    console.log("test2");
  });
});

Не повезло. Ничего не печатается.

Есть ли способ сделать это с помощью направляющих? И какое правильное событие я должен использовать?

1 Ответ

0 голосов
/ 19 апреля 2020

Не .ajaxStop не работает? это обратный вызов jquery, когда все запросы ajax завершены. Событие Rails ajax:stopped наступает, когда останавливается один запрос ajax.

Если вы хотите сделать что-то нестандартное, вы можете прослушать события ajax:beforeSend и увеличить глобальный счетчик текущих активных ajax запрашивает и ajax:complete событие, чтобы уменьшить этот счетчик. После уменьшения счетчика проверьте, если == 0, чтобы запустить код. Но это будет считать только рельсы, сгенерированные ajax запросов, вы должны иметь возможность использовать метод jQuery, который подсчитывает все jquery * ajax запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...