Ajax响应被修剪

时间:2011-01-31 16:13:41

标签: ajax encoding jquery ckeditor

我发送一些html(通过CKEditor)插入到.php通过jQuery ajax()并让PHP返回格式化的html并将其放回textarea。

这是Ajax调用

var elhtml = document.getElementById('products_description[1]');
$.ajax({
        type: "POST",
        dataType: "json",
        data: 'elhtml=' + elhtml.value,
        url: 'categories_cleanup.php',
        success: function(data) {

            $('#textarea').val(data.message);

        }
    });

这是PHP

<?php
echo json_encode(array("message"=>strip_tags( $_POST['elhtml'], '<ul><li>')));  
?>

问题是当html回来时会被修剪掉。 所以我开始调试,发现它总是在有特殊字符的位置被修剪。如果我将ajax发送到$ _POST var所在的PHP放在同一个HTML上,HTML就会回到textarea就好了。

所以问题必须是从textarea到php的旅程。 只要有',例如:It's - &gt;,代码就会被修剪掉。它的 PHP的代码将从零回到'[...] It

的第一个外观

这是一个ajax编码问题吗? 我尝试将ajax dataType设置为text,但同样的情况也会发生。

我认为这与PHP无关,因为当html插入到php本身时,它可以完美地处理它。

有什么想法吗? 提前致谢

2 个答案:

答案 0 :(得分:0)

卷曲引号不是ISO 8859,默认编码。尝试强制PHP发送标题Content-Type: application/json; charset=utf-8

您可以在Firebug的Net选项卡中检查AJAX事务中使用的标头(jQuery的普通AJAX请求也会显示在控制台中)。

答案 1 :(得分:0)

答案由ThiefMaster提供:

将'elhtml ='+ elhtml.value替换为{elhtml:elhtml.value} - 否则你必须处理转义等