Возвращаемое значение json_encode разное
Ситуация такая. Есть сайт, на нем все работает нормально. Обычная функция загрузки, отрабатывает нормально. В Консоли json_encode возвращает вот так:

Потом был куплен домен с хостингом у другого провайдера. Сайт перенесли, все работает, но вот функция загрузки изображения не работает. Код идентичен, и json_encode возвращает вот так:

Подскажите в какую сторону капать? Есть подозрения на то что были разные версии PHP
Ответы (2 шт):
Вам нужно либо настроить веб-сервер, чтобы определял MIME-type как application/json, либо в коде перед выводом JSON-данных передавать заголовок Content-Type: application/json.
У вас проблема в том что json возвращается нормальный, но браузер (и jQuery) не понимают что это json и работают с ним как с простым текстом.
Вам нужно передавать заголовок Content-Type: application/json.
Если на предедущем хостинге работало, а на новом нет, попробуйте включить опцию output_buffering.
Дело в том, что протокол http устроен так, что сначала нужно отправить заголовки, а потом тело запроса. То есть сначала отправляются заголовки типа Content-Type, Set-cookie, Location, а потом идет вывод, например контента через echo или другими способами.
Но после того как начался вывод, отправка заголовков игнорируется, так как нельзя отправить заголовок, потом кусок тела запроса, потом еще заголовок и так далее. Должен быть порядок.
Для примера, вот такой код отправит заголовок Content-type, напишет json, но редирект не сделает.
<?php
header("Content-type: application/json");
echo $someJson;
header("Location: /error404");
Для решения такой проблемы в php.ini (значит, и настройках в панели хостига) существует параметр output buffering - буферизация вывода. Она сохраняет все заголовки на одну кучу, тело запроса в другую кучу, и когда скрипт закончит работу - отправит всё вместе.