Рубрики
Uncategorized

Тип содержимого при выводе данных JSON

Автор оригинала: David Wong.

Представил

Причина в том, что он возвращает данные JSON интерфейсу и сообщает, что данные неверны (интерфейс копируется и изменяется на основе исходного кода, удаляя json p). Посмотрев на нижний внутренний код, я обнаружил, что код, возвращенный в JSON дважды, отличался. Но это не причина проблемы, а затем посмотрите на код JS, заключается в том, что интерфейс не был преобразован. Это также хороший шанс воспользоваться этой возможностью, чтобы взглянуть на моменты, которые я не замечал в обычное время.

Анализ

При написании кода и возврате некоторых коротких данных не существует метода инкапсуляции фреймворка, как показано ниже

exit(json_encode(['message' => 'test']));

В это время заголовки ответов Тип содержимого да текст/html

Если вы используете режим возврата ThinkPHP 3.0,

$this->ajaxReturn(['message' => 'test']);

В это время заголовки ответов Тип содержимого да текст/html;-8 . Посмотрите на исходный код, там есть эта строка кода

header('Content-Type:text/html; charset=utf-8');

заключение

На самом деле данные JSON специфичны Тип содержимого Да. приложение/json . Позже я пошел посмотреть Laravel и вернулся в json. Тип контента А именно приложение/json . Такие проблемы возникают из-за того, что они недостаточно строгие, а используемая структура несколько устарела. Кроме того, позже я посмотрел код интерфейса. На самом деле используется метод Ajax, инкапсулированный в jQuery. Тип данных Установлен в jsonp возможно json Он может быть автоматически преобразован в формат JSON, даже если Тип содержимого да текст/html;-8 В это время typeof Функция выводит возвращаемое значение, которое является объектом Типом, поэтому предыдущий код не является проблемой. Или используйте JSON.parse() Также можно преобразовать возвращаемое значение. Конечно, самое безопасное решение-это внутренние настройки. Тип содержимого по приложению/json

Ссылка: Тип содержимого.