【问题标题】:JSON data parser doesn't allow single-quoteJSON 数据解析器不允许单引号
【发布时间】:2012-06-03 12:27:38
【问题描述】:

我正在使用 PHP 使用 mysql_real_escape_string() 在我的数据库中从我的网站编写“cmets”。这将转义一些东西,以及单引号 (') 和双引号 (")。当我将这些 cmets 加载回我的网站时,我正在使用 AJAX 加载它们,由 DIV 的滚动条触发在到达 DIV 底部的每个滚动条上再加载 5 个。

在条目包含转义的 \'(单引号)之前一切正常

var ajax_entry_items = JSON.parse(http.responseText);

JSON.parse 函数报错

Uncaught SyntaxError: Unexpected token ' in Google Chrome。

如何在我的数据库中的 cmets 中仍然输入单引号和双引号并将它们带回以在网站上显示?双引号和单引号转义后返回,但由于某种原因,转义的单引号会生成

意外的令牌”错误。

谢谢。

【问题讨论】:

标签: php javascript ajax json


【解决方案1】:

在 JSON 中,不允许将字符串括在单引号中,也不允许转义单引号。必须转义双引号,不能转义单引号。

【讨论】:

  • true...对于那些需要在他们的表格中仍然逃脱 \' \" 但在让他们看到我在后面的 cmets 中所做的小问题时仍然使用 JSON 的人。它现在可以工作了。谢谢很多人!
【解决方案2】:

您应该使用json_encode() 对您从数据库输出的数据进行编码:

echo json_encode($data);

【讨论】:

  • 我做了一个这样的小解决方法:$comment_text_updated = str_replace("\'","'",$comment_text);它将用 ' 替换 \' 以便保持其余文本转义,因为错误仅与转义的 ' (单引号)有关,现在它可以工作了。感谢您的回答。
  • 您不能保证这将适用于您的字符串可能包含的所有特殊字符。始终建议依赖为此目的而设计的功能。为了逃避 MySQL,你使用mysql_real_escape_string()。要转义 Javascript,您应该使用 json_encode() 转义。您存储在数据库中的数据通常不会被转义。
  • 我正在使用 mysql_real_escape 转义并将其保存在数据库中。你的意思是我应该将其保存为未转义?如何?因为我正在逃避它:)
  • 请给我一个字符示例,这些字符应该从表中阻塞我的 ajax 阅读器,该表构建我解析并用作变量的 json 样式输出....我尝试从我的 ipad 输入所有看起来的字符特殊的字母和数字旁边,它工作得很好......似乎我的主要问题是我从表中抓取的转义单引号 *我保存表中转义的内容并执行 stripslashes(htmlspecialchars to output back
  • mysql_real_escape_string() 转义要注入 SQL(文本)查询的数据。数据本身,一旦由 RDBMS 解释,将不转义地存储。从您的数据库中加载数据并自行查看。
猜你喜欢
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
  • 2015-06-02
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多