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 テキストエリアに特別な文字を書いた場合、それらの文字は常に即座に tu htmlentities (è) に変換されます。

JSで書いたら

alert(descrizione_fr)

CKEditor で書かれた文字列を取得します。

ええ

しかし、php で文字列をエコーすると、文字列は特殊文字の直前で停止します。

例:

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にしました。それが役立つことを願っています

EDIT : textContent(IE9+) をデフォルトとして使用し、innerText を互換性のためのフォールバックとして使用

于 2013-04-09T21:13:53.270 に答える