当前位置:  开发笔记 > 编程语言 > 正文

使用jQuery检索包含换行符的JSON格式的文本时出现问题

如何解决《使用jQuery检索包含换行符的JSON格式的文本时出现问题》经验,为你挑选了2个好方法。

检索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编码器是最好的.



1> eyelidlessne..:

如果您想保留换行符,可以尝试:

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;
}



2> 小智..:

换行不是问题,因为它们需要在JSON中正确转义.如果它可用,您可以使用json_encode自动转义换行符.如果做不到这一点,你可以使用像上面的Pim Jager方法,尽管一个合适的JSON编码器是最好的.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有