Php header json content type

Php header json content type

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

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

Решение

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

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

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

Полный фрагмент красивого и понятного 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, это должно работать.

Читайте также:  Windows 10 цвет заголовка окна

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

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

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

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

Отправляю запрос на сервер через JQuery:

data: JSON.stringify
( <
"id" : 5555,
"phone" : "79999999"
>),

Мне приходит в ответ строка JSON.stringify(data), которую я могу вывести через JavaScript в блок с .

Как мне эту строку-ответ получить на PHP?

  • Вопрос задан более двух лет назад
  • 8167 просмотров

JSON.stringify не нужен

Сергей Павлов, зачем тогда вообще ajax и js. Грузите курлом:

Автор всё так сумбурно объясняет. Хрен пойми.

I want to return JSON from a PHP script.

Do I just echo the result? Do I have to set the Content-Type header?

17 Answers 17

While you’re usually fine without it, you can and should set the Content-Type header:

If I’m not using a particular framework, I usually allow some request params to modify the output behavior. It can be useful, generally for quick troubleshooting, to not send a header, or sometimes print_r the data payload to eyeball it (though in most cases, it shouldn’t be necessary).

A complete piece of nice and clear PHP code returning JSON is:

According to the manual on json_encode the method can return a non-string (false):

Returns a JSON encoded string on success or FALSE on failure.

When this happens echo json_encode($data) will output the empty string, which is invalid JSON.

Читайте также:  Data system users 0

json_encode will for instance fail (and return false ) if its argument contains a non UTF-8 string.

This error condition should be captured in PHP, for example like this:

Then the receiving end should of course be aware that the presence of the jsonError property indicates an error condition, which it should treat accordingly.

In production mode it might be better to send only a generic error status to the client and log the more specific error messages for later investigation.

Read more about dealing with JSON errors in PHP’s Documentation.

Ссылка на основную публикацию
Adblock detector