@Tokenchik

Как починить json?

Собираю json для ajax запроса. Html разметка делает его невалидным, как решить эту проблему?

$response = array(
            "html" => $template,
            "show" => 'true'
        );
      header('Content-type: application/json; charset=utf-8');
      $json = json_encode($response );


Если я убираю в массиве данные html - то все нормально, и ajax спокойно все разбирает. Ошибка именно со стороны PHP.
Вот в таком виде он почему то не разбирается никак.
5a7737e959988181686239.jpeg
  • Вопрос задан
  • 175 просмотров
Решения вопроса 2
OKyJIucT
@OKyJIucT
Sunshine reggae
Единственное, что видно - конфликт кавычек - сам HTML использует двойные кавычки, и в двойные кавычки он же и завернут. Попробуйте так

$json = json_encode($response, JSON_HEX_QUOT);
Ответ написан
Комментировать
rabbit418
@rabbit418
23 yo Designer from Ukraine
Ну самое простое можно $template прогнать через urlencode(), а на клиенте разобрать обратно через decodeURIComponent().

<?php
$template = implode("\n", [
	'<!DOCTYPE html>',
	'<html lang="en">',
	'<head>',
		'<meta charset="UTF-8">',
		'<title>Document</title>',
	'</head>',
	'<body>',
		'<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima consectetur placeat, doloribus, qui eaque quas laborum fuga voluptas dolorum distinctio illo quibusdam quia cum, inventore quos. Quo ipsam sed asperiores.</p>',
	'</body>',
	'</html>'
]);

$response = array(
    "html" => urlencode($template),
    "show" => 'true'
);
header('Content-type: application/json; charset=utf-8');
$json = json_encode($response);

echo $json;
?>


<script>
var data = new FormData();
data.append("foo", "bar");

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(decodeURIComponent(this.responseText));
  }
});

xhr.open("GET", "/ajax");

xhr.send(data);
</script>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 01:35
5000 руб./за проект
24 нояб. 2024, в 01:24
500 руб./за проект
24 нояб. 2024, в 00:04
5000 руб./за проект