我想通过script
-tag提供我的JSON数据
<?php
$myArray = array(
'a' => 'Hello world!',
'b' => '</script>',
'c' => 123.456,
);
$myJson = json_encode($myArray);
?>
<script id="mydata" type="application/json"><?=$myJson?></script>
然后我想用Javascript获取我的JSON数据:
try {
var myArray = JSON.parse(document.getElementById('mydata').innerHTML);
console.log(myArray);
} catch(e) {
console.log(e.message);
}
如何在PHP中转义$myJson
字符串以避免HTML错误?
答案 0 :(得分:0)
获得类似结果的一种方法是将JSON直接分配给JS变量,
<script>
var myVariable = JSON.parse('<?php echo $myJson; ?>');
console.log('myVariable', myVariable);
</script>
但是,如果您坚持按照您提到的方式进行操作,则可以使用htmlentities或htmlspecialchars进行转义,然后进行this post中提到的一些肮脏的技巧。 / p>
<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>