Как вернуть json ответ php

Я хочу вернуть JSON из PHP script.

Я просто повторяю результат? Должен ли я устанавливать заголовок Content-Type ?

В то время как вы, как правило, без него, можете и должны устанавливать заголовок Content-Type:

Если я не использую определенную структуру, я обычно разрешаю некоторым параметрам запроса изменять поведение вывода. Может быть полезно, как правило, для быстрого устранения неполадок, чтобы не отправлять заголовок или иногда print_r полезную нагрузку данных для глазного яблока (хотя в большинстве случаев это не обязательно).

Полный кусок приятного и понятного PHP-кода, возвращающего JSON:

Попробуйте json_encode кодировать данные и установить тип содержимого с помощью header('Content-type: application/json'); .

В соответствии с руководством по json_encode метод может возвращать нестроку (false):

Возвращает строку с кодировкой JSON при успешном FALSE или FALSE при сбое.

Когда это произойдет, echo json_encode($data) выведет пустую строку, что является недопустимым JSON.

Например, json_encode , например, fail (и возвращает false ), если его аргумент содержит строку, отличную от UTF-8.

Это условие ошибки должно быть записано в PHP, например:

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

В режиме производства может быть лучше отправить клиенту только общий статус ошибки и записать более конкретные сообщения об ошибках для последующего расследования.

Подробнее о проблемах с ошибками JSON в документации PHP.

Я хочу вернуть JSON из скрипта PHP.

Я просто повторяю результат? Должен ли я установить Content-Type заголовок?

Решение

Хотя обычно с этим у вас все нормально, вы можете и должны установить заголовок Content-Type:

Если я не использую конкретную платформу, я обычно позволяю некоторым параметрам запроса изменять поведение вывода. Это может быть полезно, как правило, для быстрого устранения неполадок, чтобы не отправлять заголовок или иногда print_r полезную нагрузку данных, чтобы увидеть его (хотя в большинстве случаев это не должно быть необходимо).

Читайте также:  Билайн тариф за 200 рублей в месяц

Другие решения

Полный фрагмент красивого и понятного PHP-кода, возвращающего JSON:

Пытаться json_encode кодировать данные и установить тип контента с header('Content-type: application/json'); ,

Согласно руководство по json_encode метод может вернуть не строку (ложный):

Возвращает JSON-кодированную строку в случае успеха или FALSE на провал.

Когда это произойдет echo json_encode($data) выведет пустую строку, которая неверный JSON .

json_encode например, потерпит неудачу (и вернется false ) если его аргумент содержит строку, отличную от UTF-8.

Это условие ошибки должно быть зафиксировано в PHP, например, так:

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

В рабочем режиме может быть лучше отправить клиенту только общий статус ошибки и записать более конкретные сообщения об ошибках для дальнейшего изучения.

Подробнее о работе с ошибками JSON читайте в Документация PHP .

Установите тип контента с помощью header('Content-type: application/json'); а затем повторить ваши данные.

Также полезно установить безопасность доступа — просто замените * доменом, к которому вы хотите получить доступ.

Ответ на ваш вопрос это здесь ,

Тип носителя MIME для текста JSON:
применение / JSON.

так что если вы установите заголовок для этого типа и выведите строку JSON, это должно работать.

Как сказано выше:

сделаю работу. но имейте в виду, что:

У Ajax не возникнет проблем с чтением json, даже если этот заголовок не используется, за исключением случаев, когда ваш json содержит некоторые HTML-теги. В этом случае вам нужно установить заголовок как application / json.

Убедитесь, что ваш файл не закодирован в UTF8-BOM. Этот формат добавляет символ в верхней части файла, поэтому ваш вызов header () не удастся.

Читайте также:  Готика 3 учителя воровских навыков

Я проверяю на сервере есть ли данное значение которое передал ajax в бд и хочу вернуть ответ, как это сделать?
Вот код:

Т.е. Я проверяю есть ли значение и возвращаю в js допустим true, и далее если это true, то скрипт выполнит то что я скажу.