【发布时间】:2018-04-12 02:33:04
【问题描述】:
我觉得这肯定是一个经常回答的问题的重复,但我找不到解决我特定问题的答案。
我正在通过 PHP 从 MySQL 加载数据,包括一些字符串和 JSON 编码的字符串。此数据可能包含用户输入的特殊字符。
然后我将这些数据合并到一个 PHP 数组中,然后将其 json_encode 并使用 JSON.parse 将其读入 javascript。
我的问题是,这些字符串中的任何一个撇号都会中断 javascript,从而阻止 JSON.parse 完成。
我认为有三种方法可以解决这个问题:
- 在将用户输入的数据保存到数据库之前对其进行某种编码
- 从 MySQL 加载时转义特殊字符(使用
htmlspecialchars()或类似的),尽管在加载存储为 JSON 字符串的数据时这会很困难(我想我可以对其进行解码,然后循环并转义特殊字符在每个元素中,然后重新编码)。 - 以某种方式转义 javascript 中的特殊字符。但我不知道该怎么做。
我不得不说,特殊字符编码可能是 Web 开发中最令人沮丧的一个方面,因为它会给我带来很多意想不到的错误,而且我很难理解不同的功能以及何时应该使用它们。
编辑:
var feedback = JSON.parse('{"721103":[{"sessionid":"45","feedback":{"praise":["","",""],"development":["","",""]}},{"sessionid":"46","feedback":{"praise":["Test","Test's",""],"development":["","",""]}}') ;
Test's 中的撇号破坏了 javascript
【问题讨论】:
-
您能否在问题中包含来自
php的JSON回复? -
@guest271314 查看编辑
-
您可以在 JSON 字符串中搜索
'并将其替换为\'。 -
你能分享你正在编码的php数组吗
-
为什么需要
JSON.parse('...');?不能直接使用输出对象吗?
标签: javascript php mysql json