Как избежать JSON -данных внутри тега скрипта? - PullRequest
0 голосов
/ 12 июля 2020

Я хочу обслуживать свои JSON -данные через script -tag

<?php

  $myArray = array(
    'a' => 'Hello world!', 
    'b' => '</script>',
    'c' => 123.456,
  );

  $myJson = json_encode($myArray);

?>

<script id="mydata" type="application/json"><?=$myJson?></script>

, а затем я хочу вернуть свои JSON -данные в Javascript:

try {

  var myArray = JSON.parse(document.getElementById('mydata').innerHTML);
  console.log(myArray);

} catch(e) {

  console.log(e.message);

}

Как избежать $myJson -строки в PHP, чтобы избежать HTML -ошибок?

1 Ответ

0 голосов
/ 12 июля 2020

Один из способов добиться аналогичного результата - присвоить JSON непосредственно переменной JS,

<script>
var myVariable = JSON.parse('<?php echo $myJson; ?>');
console.log('myVariable', myVariable);
</script>

Но если вы настаиваете на том, чтобы делать это так, как вы упомянули, тогда вы можете избежать этого, используя htmlentities или htmlspecialchars , а затем выполнить несколько грязных хаков, упомянутых в этом сообщении .

<script id="mydata" type="application/json"><?php echo htmlentities($myJson) ; ?></script>

<script>
var txt = document.createElement("textarea");
txt.innerHTML = document.getElementById('mydata').innerHTML;
console.log('Parsed', JSON.parse(txt.value));
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...