Некорректный JSON на сервере в AJAX в PHP

Давайте рассмотрим распространенные ситуации в серверном коде, неожиданно приводящие к появлению некорректному JSON.

Пусть у нас есть следующий корректный код:

ajax.php<?php
  $data = [1, 2, 3];
  
  header('Content-Type: application/json');
  echo json_encode($data);
?>

Давайте посмотрим, как его можно испортить.

Вариант

Если вывести отладочную информацию, то она отправится в качестве ответа вместе с JSON, испортив его:

ajax.php<?php
  $data = [1, 2, 3];
  var_dump($data);
  
  header('Content-Type: application/json');
  echo json_encode($data);
?>

Вариант

PHP ошибки типа Warning и Notice также будут отправляться вместе с ответом сервера. К примеру, ошибочно напишем несуществующую переменную:

ajax.php<?php
  $data = [1, 2, 3, $num];
  
  header('Content-Type: application/json');
  echo json_encode($data);
?>

Вариант

Лишний текст, например, теги, также испортят наш JSON:

ajax.php<div>
  <?php
    $data = [1, 2, 3];
    
    header('Content-Type: application/json');
    echo json_encode($data);
  ?>
</div>

Практические задачи

Задание 1

Воспроизведите описанные типы проблем.