0

ajax/jquery $.post を使用してコンテンツが mysql db にプッシュされたページにテキストエリアがあります。次に、mysql データが php で呼び出され、javascript で新しい動的テキストエリアにプッシュされます。

htmlentities() を使用してすべての html を変換してから、データベースにプッシュします。

次に、mysql_query を実行してデータをドラッグします。この時点でデータをエコーすると、正常にエコーされます。

次に、それをjs関数にプッシュして新しいテキストエリアを作成し、データを追加すると、エラーが発生します。mysql_query で取得したデータを警告しようとしても、何も得られません。

Lorem Ipsum テキストを使用してテストしています。私はfirebugを実行しましたが、私が得るエラーは

[17:44:20.948] SyntaxError: unterminated string literal @ http://**************.com/********.php:427

たくさんあるので、誰かがそれを必要としない限り、すべてのコードを投稿しません。正直に言うと、ある種のエスケープ/htmlエンコードタイプの問題だと思います。

CTRL 'U'に従って上記のエラーを取得する最後のjs関数があります

 <script>NewTextArea('1','draggable','176','672','300','300','&lt;strong&gt;Lorem Ipsum&lt;/strong&gt; es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno est&Atilde;&iexcl;ndar de las industrias desde el a&Atilde;&plusmn;o 1500, cuando un impresor (N. del
 T. persona que se dedica a la imprenta) desconocido us&Atilde;&sup3; una galer&Atilde;&shy;a de textos y los mezcl&Atilde;&sup3; de tal manera que logr&Atilde;&sup3; hacer un libro de textos especimen. No s&Atilde;&sup3;lo sobrevivi&Atilde;&sup3; 500 a&Atilde;&plusmn;os, sino que tambien ingres&Atilde;&sup3; como texto de relleno en documentos electr&Atilde;&sup3;nicos, quedando esencialmente igual al original. Fue popularizado en los 60s con la creaci&Atilde;&sup3;n de las hojas &quot;Letraset&quot;, las cuales contenian pasajes de Lorem Ipsum, y m&Atilde;&iexcl;s recientemente con software de autoedici&Atilde;&sup3;n, como por ejemplo Aldus PageMaker, el cual incluye versiones de Lorem Ipsum.');</script>
4

1 に答える 1

3

php 変数を JavaScript に挿入する場合は、 への呼び出しでラップするのが最も安全json_encode()です。Javascript には暗黙的な行末があります。つまり、文字列内の改行をエスケープする必要があります。JavaScript ブロックの一部として改行を含む php 文字列をエコーすると、スクリプトが壊れます。

于 2013-04-17T15:55:23.340 に答える