0

我有一个带有 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 上写了一些特殊的字符,这些字符总是立即转换为 tu htmlentities (è)。

如果我写在 JS

alert(descrizione_fr)

我得到了用 CKEditor 编写的字符串,例如

èèèà

但是当我在 php 中回显字符串时,字符串在特殊字符之前停止。

例如 JS:

alert(descrizione_fr)

结果是:

test_test_&egrave;test

PHP:

echo $_GET['descrizione_fr_new'];

结果是:

test_test_

我该如何解决?

谢谢!

4

1 回答 1

0

您可以尝试使用浏览器解析器执行此功能。 演示

function html_decode(text){
    var div = document.createElement("div");
    div.innerHTML = text;
    return ("textContent" in div) ? div.textContent : div.innerText ;
}

我不知道这是否是最好的方法。但我在 jQuery 中找到了这个解决方案,并把它变成了纯 JavaScript。希望有帮助

编辑:使用 textContent(IE9+) 作为默认值和 innerText 作为后备兼容性

于 2013-04-09T21:13:53.270 回答