php - 存在撇号时使用 json_encode 破坏 JSON 对象

标签 php jquery mysql json prepared-statement

情况是这样的:

我的程序接受用户输入到表单中的输入,并使用 PHP 的 PDO 和 Prepared Statements 将其保存在 MYSQL 数据库中。


数据通过 AJAX 调用检索并使用 json_encode 编码为 JSON,如下所示:

echo "<script> var jsonData = '". json_encode($profileData) . "';</script>";


然后使用 JQuery 解析:

var Profile = jQuery.parseJSON(jsonData);


这工作正常,直到用户输入 ' 字符。

即如果用户输入单词

I'm


它会像这样转义并存储在数据库中:I\'m


一旦从数据库中检索到,JSON 编码的字符串将如下所示:

<script> var jsonData = '{"fname":"Daniel","about":"i\\'m a nerd"}';</script>


虽然'被转义了,但似乎破坏了JSON。

我看到有人发布了查找/替换样式的解决方法,但我宁愿避免这种方法。

肯定有某种方法可以处理这个问题,还是我以某种方式错误地初始化了 JSON 对象?

非常感谢任何帮助,如需更多信息,请询问 :)

最佳答案

解决问题的最简单方法是在 JS 中省略引号:

echo "<script> var jsonData = " . json_encode($profileData) . ";</script>";

这将导致

<script> var jsonData = {"fname":"Daniel","about":"i\\'m a nerd"};</script>

那么jsonData就已经是一个对象了,不用解析了。尽管那时转义可能有点不对劲。

关于php - 存在撇号时使用 json_encode 破坏 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19263108/

相关文章:

javascript - 动态添加下拉列表

php - 禁用 Xdebug 转储捕获的异常

jquery - 规避 ID 中的随机数

javascript - 如何使用 jquery 或 javascript 获取单选按钮 Id 值

php - 正在努力检查是否已登录

php - 如何将iOS的NSArray或NSDictory发送到PHP Web服务

php - Woocommerce Order Again 不会复制自定义字段

jquery - 如何获取有关 jquery ajax 错误的更多详细信息?

mysql - 为什么 Sequelize 在 3120 条记录后暂停?

MySQL localhost通过续集连接困惑