我发送一些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本身时,它可以完美地处理它。
有什么想法吗? 提前致谢
答案 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} - 否则你必须处理转义等