Отправка HTML-кода через JSON - PullRequest
28 голосов
/ 21 февраля 2011

У меня есть скрипт php, который генерирует контент HTML. Есть ли способ отправить обратно этот HTML-контент через JSON на мою веб-страницу из сценария php?

Ответы [ 6 ]

27 голосов
/ 21 февраля 2011

Да, вы можете использовать json_encode, чтобы взять строку HTML и экранировать ее при необходимости.

Обратите внимание, что в JSON элемент верхнего уровня должен быть массивом или объектом (это больше не так) , это не может быть просто строкой. Таким образом, вы захотите создать объект и сделать строку HTML свойством объекта (вероятно, единственным), поэтому полученный JSON будет выглядеть примерно так:

{"html": "<p>I'm the markup</p>"}
2 голосов
/ 11 января 2016

Все строковые данные должны быть в кодировке UTF-8.

$out = array(
   'render' => utf8_encode($renderOutput), 
   'text' => utf8_encode($textOutput)
);

$out = json_encode($out);
die($out);
2 голосов
/ 25 сентября 2014

Мне нравится

Сначала поместите весь ваш HTML-контент в массив, затем выполните json_encode

$html_content="<p>hello this is sample text";
$json_array=array(

'content'=>50,
'html_content'=>$html_content
);
echo json_encode($json_array);
2 голосов
/ 04 августа 2014

Просто чтобы расширить ответ @TJ Crowder.

json_encode хорошо справляется с простыми строками html, однако, по моему опыту, json_encode часто смущается (или становится довольно трудно избежать) более сложным вложенным html, смешанным с php.Если вы находитесь в этом положении, вам нужно учесть два варианта: сначала кодировать / декодировать разметку с помощью чего-то вроде [base64_encode][1] / декодировать (немалое снижение производительности) или (и, возможно, желательно) быть болееизбирательно в том, что вы передаете через json, и вместо этого создайте необходимую разметку на стороне клиента.

1 голос
/ 21 февраля 2011

Вы можете отправить его как строку, почему бы и нет. Но вы, вероятно, немного упускаете здесь использование JSON, поскольку, насколько я понимаю, смысл в том, чтобы отправлять только необходимые данные и переносить их в HTML на клиенте.

1 голос
/ 21 февраля 2011

В PHP:

$data = "<html>....";
exit(json_encode($data));

Тогда вам следует использовать AJAX для извлечения данных и делать с ними все, что вы хотите. Я предлагаю использовать JQuery: http://api.jquery.com/jQuery.getJSON/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...