2012-02-20 6 views
0

PHPにAjax(jQuery)を介して文字列を送信しようとしたときに問題が発生しましたか?たとえば、クライアント側では、コンテンツ編集可能なdivで、クライアントは「私の脳&私の頭はあなたのものよりも」ではないが、innerHTMLで取得する文字列は "&"で止まる。私が建てられ、私自身のテキスト・エディタへの最善の方法を探しています実際に ...ajaxの文字列操作phpに送る

は詳細を尋ねることを躊躇しないでください ...

クライアント側のjsスクリプト:

function uncode(id) { 
    var str = id.innerHTML; 
    str = str.replace(/'/gi, '\'') 
      .replace(/"/gi, '\"') 
      .replace(/&/gi, '\&') 
      .replace(/&lt;/gi, '\<') 
      .replace(/&gt;/gi, '\>') 
      .replace(/&nbsp;/gi, ' '); 
    return str; 
} 

$('#saveText').click(function() { 

    var str = uncode(document.getElementById('myText')); 
    var myDatas = 'update_bio=update_bio' + '&new_bio=' + str + '&id_bio=' + id_str[1];  

    $.ajax({ 
     type: 'POST', 
     url: mypage.php, 
     data: myDatas, 
     success: function(data) { 
      alert(data); 
     }, 
     encoding: 'UTF-8', 
    }); 
}); 

サーバー側:?

$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; 
      $bdd = new PDO('mysql:host=localhost;dbname=myDB', 'root', 'root', $pdo_options); 
      $bdd->query('SET NAMES utf8'); 

if (!empty($_POST['update_bio'])) { 
    $reponse = $bdd->prepare('UPDATE bios SET texte=:new_bio WHERE id=:id_bio'); 
    $reponse->execute(array(
     'new_bio' => htmlspecialchars($_POST['new_bio']), 
     'id_bio' => htmlspecialchars($_POST['id_bio']) 
    )); 
    $reponse->closeCursor(); 
}; 

答えて

0

あなたがtext()を使用していないなぜあなたはjQueryのを使用しているので、それが動作するはずです。
ませエンコード:エンコードされたhttp://jsfiddle.net/CDTQb/
http://jsfiddle.net/CDTQb/2/

+0

私は(ユーザーのレイアウト変更のため)htmlタグを維持するためにinnerHTMLプロパティを使用していません。テキストエディタでは、execCommand関数によって制御されるボタンを使用しました。 ' Text en gras'のようなHTMLタグを作成します。だから私はタグを保持するだけでなく、スクリプトからテキストを保存する必要があります...テキスト()関数は私がそれを行うのに役立ちますか? –