it-swarm.com.ru

Отправка HTML-кода через JSON

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

28
Hirvesh

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

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

{"html": "<p>I'm the markup</p>"}
27
T.J. Crowder

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

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

$out = json_encode($out);
die($out);
2
blumanski

Просто чтобы расширить на @ T.J. Краудер ответ.

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

2
orionrush

Делай как это

Сначала поместите весь ваш 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
Lead Developer

В PHP:

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

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

1
Mārtiņš Briedis

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

1
Jan Zyka