如何在 JavaScript 函数中使用单引号(撇号)转义 JSON 值
Posted
技术标签:
【中文标题】如何在 JavaScript 函数中使用单引号(撇号)转义 JSON 值【英文标题】:How to escape JSON values with Single Quotes(apostrophe) within JavaScript function 【发布时间】:2019-08-09 11:15:50 【问题描述】:当数据被传递(不与任何特殊字符混合)到 javascript 函数时,它将控制数据。但是当使用单引号传递数据时,控制台中会出现错误
"ask_game_name":"FIFA 17"
- 打印时不会出现任何错误
"ask_game_name":"Assassin's Creed IV"
- 结果是“未捕获的语法错误:无效或意外的令牌”正好指向撇号
这是在 php 中生成此类错误时遵循的以下 sn-ps 代码
onclick='UserQueries(<?php echo json_encode($askInfoData); ?>)'
数据将作为参数参数在 JavaScript 中传递并显示 JSON 值
<script type="text/javascript">
function UserQueries(data)
console.log(data);
</script>
这是 Data 传递给 JS 后的控制台。
UserQueries("ask_info_id":"1","ask_user_id":"1","ask_game_name":"FIFA 17","username":"Nishanth","avatar":"1800766906.png")
UserQueries("ask_info_id":"2","ask_game_id":"3","ask_game_name":"Assassin
我应该如何在包含单引号值的控制台中显示这些值?
【问题讨论】:
@RobG — 不!\
不是 html 转义字符。
@Quentin—哎呀,错过了上下文。 <li data-foo='"ask_game_name":"Assassin&#39;s Creed IV"'>
可能会更好。 :-) 但大多数人似乎更喜欢 HTML 属性的双引号,所以还有更多工作要做……
@RobG — 这就是htmlspecialchars
的用途。
【参考方案1】:
使字符串可以安全地插入到 HTML 属性中:
使用htmlspecialchars
使用"
分隔属性值,或设置htmlspecialchars
上的选项以在转义数据中包含'
。
这样的:
onclick="UserQueries(<?php echo htmlspecialchars(json_encode($askInfoData)); ?>)"
【讨论】:
没有。尝试的结果将与Uncaught SyntaxError: Invalid or unexpected token
相同
@Nishanthॐ — 生成的 onclick
属性是什么样的?
我不明白你在说什么属性。可以介绍一下吗
你有一个 PHP 程序。它会生成一些 HTML。在那个 HTML 中是一个 onclick 属性。那个。
列表项标签以上是关于如何在 JavaScript 函数中使用单引号(撇号)转义 JSON 值的主要内容,如果未能解决你的问题,请参考以下文章