Обнаружение завершения вызова AJAX из внешней функции - PullRequest
0 голосов
/ 27 августа 2018

Я работаю в проекте, который создал плагины в JavaScript для выполнения некоторых вызовов ajax.Мне не разрешено изменять код в плагинах.

В плагине есть класс кнопок, который при щелчке выполняет ajax, изменяет поле в базе данных и меняет цвет текста на основе нажатой кнопки.на булево значение возвращается.Существует динамический список аналогичных кнопок (количество кнопок не фиксировано), и каждая при нажатии вносит изменения в базу данных одинаковым образом и получает назначенное состояние на основе возвращенного логического значения.

Теперь, когда любаянажата кнопка, нужно проверить количество кнопок в каждом состоянии и вывести результат на консоль.

Я обнаруживаю нажатие кнопки с помощью $(document).on('click', 'button.plugin-button', function() {}), но она не дает правильных результатов., поскольку ajax выполняется изнутри кода плагина, и мой обработчик нажатия кнопки выполняется перед ajax.

Есть ли какой-нибудь способ, которым я могу обнаружить выполнение AJAX, и когда он завершится, вызовите мойщелкните обработчик и отобразите правильный результат?

1 Ответ

0 голосов
/ 27 августа 2018

Вы можете использовать ajaxComplete

$( document ).ajaxComplete(function( event, xhr, settings ) {
if ( settings.url === "ajax/test.html" ) {
    $( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
  xhr.responseText);
}});

или функция обратного вызова, как

function checkButtonsState(){}
function makeAjaxRequest(para1, para2, callback){
/*onsuccess or on error complete*/
callback();
}
/*call it like*/
makeAjaxRequest("para1","para2", checkButtonsState)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...