@pilolin
HTML программист

Как прервать ajax запрос?

При клике на кнопку просиходит вызов функции, в которой происходит вызов ajax запроса и его выполнение. Есть другая кнопка которая по идее должна сбрасывать этот запрос и все что происходит в нем в случае успеха/неудачи
let xhr;
$(document).on('click', '.object-item', function (e) {
  constructAppartmentModal($(e.target).closest('.object-item').attr('data-id-apartment'));    
});

function constructAppartmentModal(id) {
  destructAppartmentModal();
  dataRequest = {
    idAppartment: id
  };
  dataRequest = JSON.stringify(dataRequest);
  dataAjax = {
    action: 'wp_construct_appartment',
    dataRequest: dataRequest
  }
  xhr = $.get(ajax_object.ajax_url, dataAjax).then((response) => {
    // success
  }, (response) => {
     //  error
  });
});

$('body').on('click', '.close', function() {
  xhr.abort();
 })


Код не рабочий, понимаю что xhr в последнем вызове скорей всего не существует, поэтому не представляю как обойти это
  • Вопрос задан
  • 373 просмотра
Решения вопроса 1
@pilolin Автор вопроса
HTML программист
xhr = $.get(ajax_object.ajax_url, dataAjax);
xhr.then((response) => {
    // success
}, (response) => {
    //  error
});

Решилось так. Нашел ответ в интернетах (метод then возвращает обычное обещание (Promise), а не объект XHR).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
abort() используется - ОК
Судя по коду, xhr определено на верхнем уровне, значит должно быть доступно.

p.s. на тот случай, если это было неизвестно
$('body').on('click', '.close' ...
лучше заменить на
$('.close').on('click', function() ...
Ответ написан
Комментировать
IceRD
@IceRD
ajax выполняется один раз, идет куда необходимо и возвращает результат.
на каком этапе необходимо останавливать ajax, а тем более зачем?!
наверное что-то делаете не так, подумайте на реализацией с другой стороны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы