2

tinymce テキストエリアで特殊文字に遭遇すると、php 処理スクリプトが停止する理由がわかりません。たとえば、foo と入力して送信すると問題ありません... 問題ありませんが、foo<<< と入力すると、エディターが HTML エンティティを作成して ajax 経由で送信する送信時に foo の後に停止します

でコンテンツを取得する

var c = tinyMCE.get('content').getContent();

コンテンツの送信

ajax.send("action=edit_content&c="+c+"&id="+id);

文字列が渡されていることがfirebugでわかります

action=edit_content&c=<p>foo &lt;&lt;&lt;</p>&id=8

そしてphpは本当に特別なものではなく、その投稿をvarに設定するだけです

多分 & のせいでしょ&lt;うか?多分それは実際には別のポストパラメータだと思いますか?

Ajaxに関しては、まだ足を濡らしています。私の仮定が正しい場合、どうすればそれを修正できますか?

4

1 に答える 1

3

あなたは正しい考えを持っています。アンパサンドは URL 文字列を分割しています。

改行文字を修正するにescapeは、文字列を修正する必要があります。

これを試して:

ajax.send("action=edit_content&c="+escape(c)+"&id="+id);

おそらくその必要はありません (Apache が自動的に実行するため) が、必要に応じて、次のコマンドを使用して PHP 側で文字列のエスケープを解除することもできますurldecode

<?php echo urldecode($_GET['c']); ?>
于 2013-07-07T13:30:43.547 に答える