5

私は ASP.net MVC3 を使用しており、Jquery.AJAX を使用して Json 形式のモデルを返し、それを Jquery テンプレートに渡して印刷します。

たとえば、サーバーが返す Json は {"Key":2,"Content":"I'm Jason\u003cbr /\u003ehow are you"} 代わりに {"Key":2,"Content":"I'm Jason <br /> how are you"}

Jquery テンプレートを使用して Div に追加すると、次のように出力されます。

I'm Jason <br /> how are you

意図した結果は

I'm Jason 
how are you

サーバーがサーバー側で文字列をエンコードするのを防ぐと思いますか? しかし、これはセキュリティ上の問題を引き起こす可能性があると思います。
したがって、クライアント側でJson文字列をデコードする必要があると思いますが、今のところうまくいきません。この種の問題に対処する適切な方法を誰かに教えてもらえますか?
ありがとう

*更新
してテストし jQuery('#someDiv').append(data.Content);たところ、意図したとおりに印刷されました。
したがって、問題はおそらく Jquery テンプレートに関連しています

このコードを使用してデータを Jquery テンプレートに渡しますjQuery('#someTemplate').tmpl(data).appendTo('#someDiv');
My Jquery template

<script id="someTemplate" type="text/x-jquery-tmpl">
 <div>${Content}</div>
</script>
4

3 に答える 3

1

この同じ問題に遭遇しました。エンコード/デコードまたはエスケープ/エスケープする必要はありません。

これの代わりに:

${Content}

これを使って:

{{html Content}}

Unicode は HTML として表示されます。

于 2011-06-14T19:10:18.597 に答える
0

Content 文字列のエスケープを解除する必要があります。たとえば、次のようになります。

alert(unescape('\u003cbr /\u003e'));
于 2011-01-25T14:10:49.230 に答える
0

ajax テンプレートにも同じ問題があります。文字列には \n があり、テンプレートでは無視されます。\n を変換すると、改行の代わりに が表示されます<br/><br />

私が使用する{{ unscape(myString) }}と、結果はまだ「<br />次の行のテキスト」です

于 2011-01-28T10:37:20.227 に答える