Javascript var with specialchars with AJAX to $ _GET in php

时间:2013-04-09 21:00:06

标签: php javascript ajax get special-characters

我有一个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_&egrave;test

PHP:

echo $_GET['descrizione_fr_new'];

结果:

test_test_

我该如何解决?

谢谢!

1 个答案:

答案 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作为后备兼容性