PHP | Получение ERR_CONTENT_DECODING_FAILED в запросе Ajax

Я получаю эту глупую ошибку при вызове запроса ajax, и когда я открываю URL-адрес Ajax в браузере, я получаю ту же ошибку.

введите здесь описание изображения

введите здесь описание изображения

Я в этом уже 2 месяца. Я удалил свой .htaccess и ничего не изменилось. Это происходит только на локальной среде, а не на производстве.

я пытался добавить

zlib.output_compression = On;

в мой php.ini, но ничего не изменил.

Я использую Opencart 2.2.0.0 | PHP 5.6 | Убунту ЛАМПА

ОБНОВЛЕНИЕ 1

Это код, вызываемый через ajax: -

введите здесь описание изображения

если я добавляю print_r($data);, он печатает массив данных, но проблема возникает, когда он пытается вернуть отображаемое содержимое файла представления, я попытался создать другой файл представления, но получил такой же ответ.

ОБНОВЛЕНИЕ 2

Вот запрос от devTools> вкладка сети: -

введите здесь описание изображения

и вкладка ответа пуста, ответа не вернула.

ОБНОВЛЕНИЕ 3

введите здесь описание изображения


person Hazem Taha    schedule 15.10.2018    source источник
comment
Вы попробовали все предложения здесь ~ Ошибка 330 (net::ERR_CONTENT_DECODING_FAILED):? Помните, что если вы вносите изменения в php.ini, вам необходимо перезапустить HTTP-сервер.   -  person Phil    schedule 15.10.2018
comment
поместите error_reporting в начало вашей страницы stackoverflow.com/a/37036144/5700401   -  person Abhijit Jagtap    schedule 15.10.2018
comment
Сейчас все перепробовал, не помогло :(   -  person Hazem Taha    schedule 15.10.2018
comment
Здесь я даю вам Present Это класс AjaxWrapper в PHP, который будет перехватывать любой вывод, который происходит внутри него, и большинство ошибок. Так что ваш JSON по-прежнему действителен, даже если у вас есть ошибки PHP. I've been in this for 2 months Надеюсь, вы не застряли на этом так долго. Также удалите эти ?> из чистых файлов PHP.   -  person ArtisticPhoenix    schedule 15.10.2018
comment
@ArtisticPhoenix спасибо за помощь. Я не думаю, что это связано с Ajax, поскольку я получаю тот же ответ при обычном доступе к URL-адресу из браузера и получении ответа на скриншоте выше, что вы думаете?   -  person Hazem Taha    schedule 15.10.2018
comment
accessing the URL from the browser normally AJAX-запрос — это HTTP-запрос, браузер — это HTTP-запрос. Сервер не знает разницы.   -  person ArtisticPhoenix    schedule 15.10.2018
comment
не могли бы вы проверить (ОБНОВЛЕНИЕ 1) выше, если это может помочь.   -  person Hazem Taha    schedule 15.10.2018


Ответы (2)


По моему опыту, эта ошибка возникает, когда есть ошибка php и включено сжатие. Перейдите в раздел Администрирование > Система > Настройки, а затем на вкладку Сервер и установите для параметра Уровень сжатия вывода значение 0. Также убедитесь, что для параметра Ошибки отображения установлено значение ВКЛ.

Теперь проверьте ответ на ваш вызов Ajax, и вместо ошибки декодирования вы сможете увидеть реальную ошибку, о которой сообщается.

Также помните, что если это фАТАЛЬНАЯ ошибка, сценарий может завершиться сбоем еще до того, как он получит возможность инициализировать пользовательский обработчик ошибок, и единственный способ получить данные об этом будет в журналах ошибок веб-сервера.

person billynoah    schedule 16.10.2018
comment
Большое спасибо!! Я попытался отключить сжатие вывода из php.ini, но, похоже, это не подействовало, вы сэкономили мне много времени. Еще раз большое спасибо. - person Hazem Taha; 17.10.2018

«‹» часто указывает на то, что вы пытаетесь декодировать json-html. Вы проверили devtools и видели, что на самом деле возвращает сервер?

Я сам видел это, когда запросы на json-данные либо возвращали сообщения об ошибках в формате html, либо когда запрашивающий пользователь не вошел в систему, а вызов Ajax (ошибочно) перенаправлялся на экран входа в систему.

person Dag Sondre Hansen    schedule 15.10.2018
comment
‹ был возвращен, потому что страница пыталась загрузить несуществующий файл CSS, а веб-сайт возвращает домашнюю страницу вместо возврата страницы 404, теперь я удалил этот вызов несуществующего файла, и проблема все еще существует (но ‹ ошибка в devTools исчезла). - person Hazem Taha; 15.10.2018
comment
Похоже, вы все еще не получаете достоверные json-данные, но, основываясь на имеющейся у меня скудной информации, почти невозможно сказать, почему. Проверьте наличие php-уведомлений, предупреждений и т. д., которые наверняка отключены в производственной среде, но могут присутствовать в вашей настройке разработки. Вы должны легко увидеть это в devtools. - person Dag Sondre Hansen; 15.10.2018
comment
На странице не используются данные json, не могли бы вы проверить (ОБНОВЛЕНИЕ 1) выше, если это может помочь. - person Hazem Taha; 15.10.2018
comment
@HazemTaha: Можете ли вы показать ответ на звонок от Chrome DevTools? (Если вы не знакомы с этим: откройте DevTools, выберите вкладку Network, найдите и выберите правильный http-запрос и скопируйте текст из Respone-вкладки). - person Dag Sondre Hansen; 15.10.2018
comment
@HazemTaha: последнее обновление показывает запрос, а не ответ (который отображается на вкладке Resonse). - person Dag Sondre Hansen; 15.10.2018
comment
Ответ пуст, пожалуйста, найдите скриншот ОБНОВЛЕНИЯ 3. - person Hazem Taha; 16.10.2018
comment
Если ответ постоянно пуст, у меня не осталось предложений о том, что может вызвать проблему. Мой подход состоял бы в том, чтобы установить точку останова в строке 38 и выполнить один шаг по коду, чтобы увидеть, что происходит. - person Dag Sondre Hansen; 16.10.2018