1

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

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

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

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

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

4

3 回答 3

1
echo json_encode(array("success"=>"true","data"=>$a,"type"=>"text")

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

于 2013-04-01T19:21:28.593 回答
1

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

因此,\n正在返回并因此创建无效的 JSON。

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

echo '{"success":"true","data":' . json_encode(nl2br($a)) . ',"type":"text"}';
于 2013-04-01T19:22:37.290 回答
1

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

echo str_replace('\r\n','<br>', json_encode(array("success"=>"true","data"=>$a,"type"=>"text")));
于 2013-04-01T20:06:21.083 回答