Курсы по JavaScript
Менторство: 200$ за курс. Репетиторство: 20$ за занятие. Жми для подробностей!
⊗jsPmBsJP 42 of 61 menu
Внимание! Репетиторство по Python! Осталось последнее место! Стоимость: 20$ за занятие 1.5 часа. Жми для подробностей!

Исключения при разборе JSON в AJAX в PHP

Пусть сервер присылает нам JSON и мы разбираем его с помощью JSON.parse. Данный метод может выбрасывать исключение. Это будет в том случае, если JSON некорректный. Это значит, что в следующем коде блок catch сработает не только в случае ошибки сети, но и в случае некорректного JSON:

try { let response = await fetch('/ajax.php'); if (response.ok) { let json = await response.text(); let data = JSON.parse(json); console.log(data); } else { console.log('server error'); } } catch { console.log('network error'); }

Давайте исправим ситуацию и обернем разбор JSON в свой блок try-catch:

try { let response = await fetch('/ajax.php'); if (response.ok) { let json = await response.text(); try { let data = JSON.parse(json); console.log(data); } catch { console.log('json error'); } } else { console.log('server error'); } } catch { console.log('network error'); }

Аналогичная ситуация будет с методом json объекта response:

try { let response = await fetch('/ajax.php'); if (response.ok) { try { let data = await response.json(); console.log(data); } catch { console.log('json error'); } } else { console.log('server error'); } } catch { console.log('network error'); }

Отдайте с сервера некорректный JSON. Убедитесь, что это приведет к срабатыванию общего try-catch.

Исправьте проблему, добавив еще один try-catch для разбора JSON.