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

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
Run Code Online (Sandbox Code Playgroud)

下载代码:(不适用于换行符)

$.get("ajax/contents_ajax.php", { 'get_item': id },
function (data){
    //Never gets executed if data contains line breaks
}
,'json');
Run Code Online (Sandbox Code Playgroud)

整个问题源于这样一个事实,即TinyMCE富文本编辑器似乎坚持在各处插入换行符,即使我启用了该选项

remove_linebreaks : true
Run Code Online (Sandbox Code Playgroud)

我更喜欢换行,但如果它们破坏我的代码则不行.任何人都可以告诉我这里的问题是什么,也许我怎么能用PHP编码服务器上的换行符?


更新

虽然更换建议,'\n'''没有工作,它是接近正确的解决方案.此代码删除了有问题的字符:

function parse($text){
    $parsedText = str_replace(chr(10), "", $text);
    return str_replace(chr(13), "", $parsedText);

}
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)


小智 7

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


Tho*_*Kra 1

你是否得到像 <br /> 这样的换行符或像 \n 这样的换行符?但尝试用 PHP 替换它们。

<?php
$string = 'asdfasf<br />asdfasf';
echo str_replace('<br />', '', $strin); // Replace <br /> with '' (nothing)
?>
Run Code Online (Sandbox Code Playgroud)

或者查看urlencode