检索JSON格式的文本时,我遇到了一个奇怪的问题.我使用jQuery post
将一些数据(也是JSON格式)发送到服务器(运行PHP),这很好.然后,当我使用jQuery从服务器请求相同的数据时get
,回调方法永远不会执行.仅当数据采用JSON格式且数据包含换行符时才会发生这种情况.当我不使用JSON格式时,它工作正常.令我感到困惑的是,上传数据没有问题.
上传代码:(有效)
$.post("ajax/contents_ajax.php", { 'title': caption, 'text': frameText().getContent(), 'image_id': img }, //Callback
下载代码:(不适用于换行符)
$.get("ajax/contents_ajax.php", { 'get_item': id }, function (data){ //Never gets executed if data contains line breaks } ,'json');
整个问题源于这样一个事实,即TinyMCE富文本编辑器似乎坚持在各处插入换行符,即使我启用了该选项
remove_linebreaks : true
我更喜欢换行,但如果它们破坏我的代码则不行.任何人都可以告诉我这里的问题是什么,也许我怎么能用PHP编码服务器上的换行符?
虽然更换建议,'\n'
与''
没有工作,它是接近正确的解决方案.此代码删除了有问题的字符:
function parse($text){ $parsedText = str_replace(chr(10), "", $text); return str_replace(chr(13), "", $parsedText); }
eyelidlessne.. 47
如果您想保留换行符,可以尝试:
function parse($text) { // Damn pesky carriage returns... $text = str_replace("\r\n", "\n", $text); $text = str_replace("\r", "\n", $text); // JSON requires new line characters be escaped $text = str_replace("\n", "\\n", $text); return $text; }
小智.. 7
换行不是问题,因为它们需要在JSON中正确转义.如果它可用,您可以使用json_encode自动转义换行符.如果做不到这一点,你可以使用像上面的Pim Jager方法,尽管一个合适的JSON编码器是最好的.
如果您想保留换行符,可以尝试:
function parse($text) { // Damn pesky carriage returns... $text = str_replace("\r\n", "\n", $text); $text = str_replace("\r", "\n", $text); // JSON requires new line characters be escaped $text = str_replace("\n", "\\n", $text); return $text; }
换行不是问题,因为它们需要在JSON中正确转义.如果它可用,您可以使用json_encode自动转义换行符.如果做不到这一点,你可以使用像上面的Pim Jager方法,尽管一个合适的JSON编码器是最好的.