ВНИМАНИЕ! Скидки на тариф Практик: 700$ 500$!
Обучение, помощь в поиске работы и заказов, стажировка на реальных проектах. Жми для подробностей →
⊗jsSpAXFCE 248 of 294 menu
Бесплатный ЛЕТНИЙ курс по React фреймворку NextJS. Мы уже начали, но еще можно присоединится! Жми для записи!

Полный перехват AJAX ошибок в JavaScript

Промис, который возвращает fetch, завершается с ошибкой, только если произошла ошибка сети. Если же сервер вернул ответ со статусом 404 или 500, то промис будет завершен успешно, но при этом статус ok будет установлен в false.

Давайте перехватим оба типа ошибок:

button.addEventListener('click', function() { let promise = fetch('/ajax.html') .then( response => { if (response.ok) { return response.text(); } else { console.log('плохой статус ответа'); return ''; } }, ).then( text => { console.log(text); } ).catch( error => { console.log(error); } ); });

Сделаем так, чтобы ошибка, связанная с плохим статусом HTTP ответа, также ловилась блоком catch. Для этого прокинем ее дальше через throw:

button.addEventListener('click', function() { let promise = fetch('/ajax.html') .then( response => { if (response.ok) { return response.text(); } else { throw new Error('плохой статус ответа'); } }, ).then( text => { console.log(text); } ).catch( error => { console.log(error); } ); });

Выведите текст страницы, если запрос был успешным, и ошибку, если что-то пошло не так.

enru