如何在 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—哎呀,错过了上下文。 &lt;li data-foo='"ask_game_name":"Assassin&amp;#39;s Creed IV"'&gt; 可能会更好。 :-) 但大多数人似乎更喜欢 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 值的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript字符串单引号和双引号的使用

JavaScript字符串单引号和双引号的使用

如何在 JavaScript 函数中使用单引号(撇号)转义 JSON 值

如何在 MessageFormat 中使用单引号

WPF绑定中单引号的目的是什么?

字符串小细节方法