2012-03-22 2 views
0

js側のjavaサーブレットとiframeを使用してiframeにいくつかのHTMLコードを送り返します。私は実際には、jQueryを使用して単一の<div>にカプセル化することによってHTMLコードからいくつかのjsonを解析していますが、戻される文字列にはテキストが追加されることがあります。サーブレットからjsアプリケーションにHTMLを送信すると、Firefoxのデータが破損する

追加されるテキストに山括弧で囲まれた単語がある場合、Firefoxは自動的に括弧を閉じますが、これは不要です。例えば

、私はこの送信した場合:どのネジアップ私の構文解析を

<div>{"location":[],"columns":["<case expression>","headers"]}</case></div> 

<div>{"location":[],"columns":["<case expression>","headers"]}</div> 

Firefoxは(とONLY Firefoxのこれまでのところ、ないIE、クロム)、このようにそれを受け取ることになりますが。 Content-Typetext/htmlというテキストを送信していますが、これは問題の原因と考えられます。私はを使用していない限りをapplication/jsonにしようとしましたが、iframeにhtmlを書きません。

解決方法を教えてもらえますか?あまりにも広範でない場合は、データを送信する別の方法を試してみます。

+0

HTMLにテキストを追加する前に、ある時点でコンテンツをHTMLエスケープする必要があります。文字「<" and ">」はメタキャラクタであり、HTMLのどこにでも表示することはできません。それらを "<"と ">"とエンコードする必要があります。 – Pointy

+0

代わりにJSONを送信して、そのページで実行されているJavaScriptでHTMLを作成できますか? – tinyd

+0

@tinydデータが読み込まれているのを確認する前に、すべてがHTML形式で書き込まれるように、データが読み込まれています。 –

答えて

2

"<"と ">"の文字がテキストの一部として表示されるように、ブラウザがHTMLメタ文字をそのまま解釈するのを防ぐため、HTMLエンティティとして「エスケープ」できます。 「<」は&lt;、「>」は&gt;です。一般的に人々はまた、アンパサンド(&)を&amp;と引用していますが、私はブラウザがそれについて少し賢いと思います。コードソリューションのOPによって

編集:

私は完全に働いたStringEscapeUtils.escapeHTML()を、使用していました。ありがとう!

関連する問題