Некорректный JSON на сервере в AJAX в PHP
Давайте рассмотрим распространенные ситуации в серверном коде, неожиданно приводящие к появлению некорректному JSON.
Пусть у нас есть следующий корректный код:
<?php
$data = [1, 2, 3];
header('Content-Type: application/json');
echo json_encode($data);
?>
Давайте посмотрим, как его можно испортить.
Вариант
Если вывести отладочную информацию, то она отправится в качестве ответа вместе с JSON, испортив его:
<?php
$data = [1, 2, 3];
var_dump($data);
header('Content-Type: application/json');
echo json_encode($data);
?>
Вариант
PHP ошибки типа Warning и Notice также будут отправляться вместе с ответом сервера. К примеру, ошибочно напишем несуществующую переменную:
<?php
$data = [1, 2, 3, $num];
header('Content-Type: application/json');
echo json_encode($data);
?>
Вариант
Лишний текст, например, теги, также испортят наш JSON:
<div>
<?php
$data = [1, 2, 3];
header('Content-Type: application/json');
echo json_encode($data);
?>
</div>
Практические задачи
Воспроизведите описанные типы проблем.