【问题标题】:JSON string with some html tag failing at parse带有一些 html 标记的 JSON 字符串在解析时失败
【发布时间】:2013-03-22 22:07:15
【问题描述】:

我正在使用 jQuery ajax 将用户输入发送到服务器...在数据库中插入用户值后,我将响应作为 JSON 字符串发送回客户端,如下所示

echo '{"success":"true","data":"'.nl2br($a).'","type":"text"}';

由于用户输入可以包含换行符,我使用 nl2br 以便所有换行符都转换为
并且还知道 JSON 不支持多行,这就是我使用 nl2br 的原因....但是解析是客户端失败

请告诉我是什么原因以及如何解决?

解析代码var obj = jQuery.parseJSON(data);

【问题讨论】:

  • 您能否显示客户收到的完整回复?
  • 您在客户端遇到的错误是什么?
  • {"success":"true","data":"adad<br> dadad","type":"text"}这是我在客户端的回复
  • 这是有效的 JSON,你得到什么解析错误?
  • 没有显示任何错误....但是解析行前面的任何内容都没有被执行,,,那个解析语句没有被执行

标签: php javascript json multilinestring


【解决方案1】:
echo json_encode(array("success"=>"true","data"=>$a,"type"=>"text")

使用 php 函数 json_encode 而不是尝试自己设置编码。这样你会省去很多麻烦。 http://php.net/manual/en/function.json-encode.php

【讨论】:

  • 我得到这个字符串作为响应 {"success":"true","data":"dada\r\ndada\r\nada","type":"text"} 我想在这里我需要将所有 \r\n 替换为
    ....??
【解决方案2】:

nl2br() 不替换换行符,只在它们之前插入<br>。

因此,\n 被返回,因此创建了无效的 JSON。

您应该在创建 JSON 字符串时使用 json_encode()。为简单起见,您可以简单地在 data 上使用它:

echo '{"success":"true","data":' . json_encode(nl2br($a)) . ',"type":"text"}';

【讨论】:

  • 好吧,让我先试试……我会回复你的
  • 我收到了这个{"success":"true","data":"dada<br \="">\r\ndada<br \="">\r\nada","type":"text"}
【解决方案3】:

您应该使用 json_encode,它将生成一个包含 \r\n 的 JSON 字符串用于换行。然后你必须用<br>标签替换每个\r\n出现。

echo str_replace('\r\n','<br>', json_encode(array("success"=>"true","data"=>$a,"type"=>"text")));

【讨论】:

    猜你喜欢
    • 2012-08-09
    • 2021-07-08
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    相关资源
    最近更新 更多