我有一个CKEditor的文本表单:
<textarea id="descrizione_it"></textarea>
<textarea id="descrizione_fr"></textarea>
... many others inputs ...
<button onclick="addDataProd()">
JS功能:
function addDataProd(){
var descrizione_it = CKEDITOR.instances.descrizione_it.getData()
var descrizione_fr = CKEDITOR.instances.descrizione_fr.getData()
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert(xmlhttp.responseText);
}
}
xmlhttp.open("GET","prodotti_ajax.php?descrizione_it_new="+descrizione_it + "&descrizione_fr_new="+descrizione_fr,true);
xmlhttp.send();
}
PHP用于获取数据并更新数据库。
现在,如果我在CKEditor textarea上写了一些特殊的字符,那些字符总是会立即被转换为真实的(è)。
如果我写在JS上
alert(descrizione_fr)
我得到了用CKEditor编写的字符串,例如
EEEA
但是当我在php中回显字符串时,字符串会在特殊字符之前停止。
E.g。 JS:
alert(descrizione_fr)
结果:
test_test_ètest
PHP:
echo $_GET['descrizione_fr_new'];
结果:
test_test_
我该如何解决?
谢谢!
答案 0 :(得分:0)
您可以尝试使用浏览器解析器执行此功能。 DEMO
function html_decode(text){
var div = document.createElement("div");
div.innerHTML = text;
return ("textContent" in div) ? div.textContent : div.innerText ;
}
我不知道这是不是最好的方法。但我发现this solution in jQuery并将其设为纯javascript。 希望有所帮助
编辑:使用textContent(IE9 +)作为默认值,使用innerText作为后备兼容性