Mor*_*sen 43 jquery json tinymce line-breaks
检索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);
}
eye*_*ess 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编码器是最好的.
你是否得到像 <br /> 这样的换行符或像 \n 这样的换行符?但尝试用 PHP 替换它们。
<?php
$string = 'asdfasf<br />asdfasf';
echo str_replace('<br />', '', $strin); // Replace <br /> with '' (nothing)
?>
或者查看urlencode
| 归档时间: | 
 | 
| 查看次数: | 95818 次 | 
| 最近记录: |