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编码器是最好的.
你是否得到像 <br /> 这样的换行符或像 \n 这样的换行符?但尝试用 PHP 替换它们。
<?php
$string = 'asdfasf<br />asdfasf';
echo str_replace('<br />', '', $strin); // Replace <br /> with '' (nothing)
?>
Run Code Online (Sandbox Code Playgroud)
或者查看urlencode
| 归档时间: |
|
| 查看次数: |
95818 次 |
| 最近记录: |