我想通过script-tag提供我的JSON-data
<?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-string以避免HTML错误?
发布于 2020-07-12 21:04:59
实现类似结果的一种方法是将JSON直接赋值给JS变量,
<script>
var myVariable = JSON.parse('<?php echo $myJson; ?>');
console.log('myVariable', myVariable);
</script>但是如果你坚持用你提到的方式去做,那么你可以用htmlentities或者htmlspecialchars来逃避它,然后做一些在this post中提到的肮脏的黑客行为。
<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>https://stackoverflow.com/questions/62860172
复制相似问题