Прерывание ajax запроса

209
23 июля 2018, 14:50

При клике на кнопку просиходит вызов функции, в которой происходит вызов 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();
})

Данный код не рабочий, каким образом возможно сделать прерывание?

Answer 1

Проблема вашего кода - в том, что метод then возвращает обычное обещание (Promise), а не объект XHR.

Вот так будет правильнее:

xhr = $.get(ajax_object.ajax_url, dataAjax);
xhr.then((response) => {
    // success
}, (response) => {
    //  error
});
READ ALSO
Проблемы с валидацией формы

Проблемы с валидацией формы

Есть форма для заполнения данныхЕсть её валидация

182
React, Firefox 20, Illegal operation on WrappedNative prototype object

React, Firefox 20, Illegal operation on WrappedNative prototype object

У пользователей на старом FF 200, 22,0 возникает следующая ошибка, при рендере <input /> даже пустого,:

232
Не получается сложить JS

Не получается сложить JS

$("#bonus")text(sum + 20); так получается сложить, а так $("#bonus")

194
Почему в массив stream заносится undefined,

Почему в массив stream заносится undefined,

мне нужно, чтобы в массив stream записывался последний бит из массива arr, и потом этот же последний бит нужно удалить из arr

155