我正在使用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"}';