НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
⊗jsPmBsJP 42 of 61 menu

Исключения при разборе 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.

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить