首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何转义script-tag中的JSON-data?

如何转义script-tag中的JSON-data?
EN

Stack Overflow用户
提问于 2020-07-12 18:54:35
回答 1查看 40关注 0票数 0

我想通过script-tag提供我的JSON-data

代码语言:javascript
运行
复制
<?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数据:

代码语言:javascript
运行
复制
try {

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

} catch(e) {

  console.log(e.message);

}

如何在PHP中转义$myJson-string以避免HTML错误?

EN

回答 1

Stack Overflow用户

发布于 2020-07-12 21:04:59

实现类似结果的一种方法是将JSON直接赋值给JS变量,

代码语言:javascript
运行
复制
<script>
var myVariable = JSON.parse('<?php echo $myJson; ?>');
console.log('myVariable', myVariable);
</script>

但是如果你坚持用你提到的方式去做,那么你可以用htmlentities或者htmlspecialchars来逃避它,然后做一些在this post中提到的肮脏的黑客行为。

代码语言:javascript
运行
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62860172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档