Я хочу вернуть JSON из скрипта PHP.
Я просто повторяю результат? Должен ли я установить Content-Type
заголовок?
Хотя обычно у вас все нормально, вы можете и должны установить заголовок Content-Type:
<?PHP
$data = /** whatever you're serializing **/;
header('Content-Type: application/json');
echo json_encode($data);
Если я не использую конкретную платформу, я обычно позволяю некоторым параметрам запроса изменять поведение вывода. Это может быть полезно, как правило, для быстрого устранения неполадок, чтобы не отправлять заголовок или иногда print_r полезную нагрузку данных, чтобы увидеть его (хотя в большинстве случаев это не должно быть необходимо).
header('Content-type:application/json;charset=utf-8');
Полный фрагмент красивого и понятного PHP-кода, возвращающего JSON:
источник
Согласно руководству по
json_encode
методу можно вернуть не строковое значение ( false ):Когда это произойдет,
echo json_encode($data)
будет выведена пустая строка, которая является недопустимым JSON .json_encode
например, потерпит неудачу (и вернетсяfalse
), если его аргумент содержит строку, отличную от UTF-8.Это условие ошибки должно быть зафиксировано в PHP, например, так:
Тогда принимающая сторона должна, конечно, знать, что наличие свойства jsonError указывает на состояние ошибки, которое оно должно обрабатывать соответствующим образом.
В рабочем режиме может быть лучше отправить клиенту только общий статус ошибки и записать более конкретные сообщения об ошибках для дальнейшего изучения.
Узнайте больше о работе с ошибками JSON в документации PHP .
источник
charset
параметра для JSON; см. примечание в конце tools.ietf.org/html/rfc8259#section-11 : «Для этой регистрации не определен параметр« charset ». Добавление одного действительно не влияет на совместимых получателей». (JSON должен передаваться как UTF-8 для tools.ietf.org/html/rfc8259#section-8.1 , поэтому указание того, что он закодирован как UTF-8, немного избыточен.)charset
Из строки заголовка HTTP удален избыточный параметр.Попробуйте json_encode для кодирования данных и установите тип содержимого с помощью
header('Content-type: application/json');
.источник
Установите тип контента с помощью,
header('Content-type: application/json');
а затем повторить ваши данные.источник
Также полезно установить безопасность доступа - просто замените * доменом, к которому вы хотите получить доступ.
Вот еще примеры на что: как обойти Access-Control-Allow-Origin?
источник
источник
Как сказано выше:
сделаю работу. но имейте в виду, что:
У Ajax не возникнет проблем с чтением json, даже если этот заголовок не используется, за исключением случаев, когда ваш json содержит некоторые HTML-теги. В этом случае вам нужно установить заголовок как application / json.
Убедитесь, что ваш файл не закодирован в UTF8-BOM. В этом формате добавляется символ в верхней части файла, поэтому ваш вызов header () не будет выполнен.
источник
Простая функция для возврата ответа JSON с кодом состояния HTTP .
источник
header_remove
и явная установка ответа http - хорошая идея; хотя установка статуса и затем http_response кажется излишним. Могу также захотеть добавитьexit
заявление до конца. Я объединил твою функцию с @trincot: stackoverflow.com/a/35391449/339440Ответ на ваш вопрос здесь ,
Это говорит.
так что если вы установите заголовок для этого типа и выведите строку JSON, он должен работать.
источник
Да, вам нужно использовать эхо для отображения вывода. Mimetype: приложение / JSON
источник
Если вам нужно, чтобы json от php отправлял пользовательскую информацию, вы можете добавить это
header('Content-Type: application/json');
раньше, чтобы распечатать любую другую вещь, так что тогда вы можете распечатать свой обычныйecho '{"monto": "'.$monto[0]->valor.'","moneda":"'.$moneda[0]->nombre.'","simbolo":"'.$moneda[0]->simbolo.'"}';
источник
Если вы запрашиваете базу данных и вам нужен набор результатов в формате JSON, это можно сделать так:
Чтобы получить помощь в разборе результата с помощью jQuery, взгляните на этот учебник .
источник
Это простой PHP-скрипт, который возвращает мужской женский и идентификатор пользователя, так как значение json будет любым случайным значением при вызове скрипта json.php.
Надеюсь, это поможет, спасибо
источник
Простой способ отформатировать ваши доменные объекты в JSON - это использовать Marshal Serializer . Затем передайте данные
json_encode
и отправьте правильный заголовок Content-Type для ваших нужд. Если вы используете фреймворк, такой как Symfony, вам не нужно заботиться об установке заголовков вручную. Там вы можете использовать JsonResponse .Например, правильным будет Content-Type для работы с Javascript
application/javascript
.Или, если вам нужно поддерживать несколько довольно старых браузеров, самый безопасный будет
text/javascript
.Для всех других целей, таких как мобильное приложение, используйте
application/json
в качестве Content-Type.Вот небольшой пример:
источник
Всякий раз, когда вы пытаетесь вернуть ответ JSON для API или убедитесь, что у вас есть правильные заголовки, а также убедитесь, что вы возвращаете действительные данные JSON.
Вот пример сценария, который поможет вам вернуть ответ JSON из массива PHP или из файла JSON.
источник
Вы можете использовать эту маленькую библиотеку PHP . Он отправляет заголовки и дает вам объект, чтобы использовать его легко.
Это выглядит как :
источник