JSON字符串与一些html标签在解析失败


JSON string with some html tag failing at parse

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

回声"{"成功":"真正的","数据":"‘.nl2br($)"。","类型":"文本"}的;

作为用户输入可以包含新行,我使用nl2br,以便所有新行字符转换为
也知道JSON不支持多行,这就是为什么我使用nl2br....但是解析在客户端失败

请告诉我原因是什么,我该如何解决?

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

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

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

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

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

因此,返回'n,因此创建无效的JSON。

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

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