Json 返回了我的 HTML
>采用 unicode 形式 \u003cbr /\u003e 。导致
>作为文本打印而不是换行
我正在使用 ASP.net MVC3,并使用 Jquery.AJAX 返回了一个 Json 格式的模型,然后将其传递到要打印的 Jquery 模板中。
例如服务器返回的Json是 {"Key":2,"Content":"我是 Jason\u003cbr /\u003e 你好吗"}
而不是 {"Key":2,"Content":"I'm Jason
gt; how are you"}
当我使用 Jquery 模板将其附加到 Div 中时,它打印出类似这样的内容:
我是 Jason
>你好吗
而预期的结果应该是
I'm Jason
how are you
我想阻止服务器在服务器端对字符串进行编码吗?但我认为这可能会导致安全问题。
因此我认为我必须在客户端解码 Json 字符串,但到目前为止还没有运气。谁能告诉我处理此类问题的适当方法?
谢谢
*已更新
我用 jQuery('#someDiv').append(data.Content);
进行了测试,它按预期打印出来。
所以问题可能与 Jquery 模板有关
我使用此代码将数据传递到 Jquery 模板 jQuery('#someTemplate').tmpl(data).appendTo('#someDiv');
我的 Jquery 模板
<script id="someTemplate" type="text/x-jquery-tmpl">
<div>${Content}</div>
</script>
I'm using ASP.net MVC3 and i returned a model which is in Json format using Jquery.AJAX and then I pass it into a Jquery template to be printed out.
For example the Json that server returned is{"Key":2,"Content":"I'm Jason\u003cbr /\u003ehow are you"}
instead of{"Key":2,"Content":"I'm Jason <br /> how are you"}
when I append it into an Div using Jquery template it printed out something like this:
I'm Jason <br /> how are you
while the intended result should be
I'm Jason
how are you
Am I suppose to prevent the server from encoding the string in server side? But I think this may cause security issue.
Therefore I think I have to decode the Json string in client side but no luck so far. Can anyone show me an appropriate way to deal with this kind of problem?
Thanks
*Updated
I tested with jQuery('#someDiv').append(data.Content);
and it print out as intended.
So the problem is probably related to Jquery template
I'm using this code to pass data into Jquery template jQuery('#someTemplate').tmpl(data).appendTo('#someDiv');
My Jquery template
<script id="someTemplate" type="text/x-jquery-tmpl">
<div>${Content}</div>
</script>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我遇到了同样的问题。不需要编码/解码或转义/转义。
代替这个:
使用这个:
将 unicode 显示为 HTML。
I ran into this same issue. No need encode/decode or escape/unescape.
Instead of this:
Use this:
The unicode with be displayed as HTML.
您应该对内容字符串进行转义,例如:
You should unescape your Content string, e.g.:
我对 ajax 模板也有同样的问题。该字符串有一个 \n,它在模板上被忽略,如果我将 \n 转换为
则显示
而不是换行符。如果我使用
{{ unscape(myString) }}
那么结果仍然是“一些文本
下一行”gt;
I have the same issue with ajax templates. the string has a \n which gets ignored on the template and if I convert the \n to
<br/>
then the<br />
is displayed instead of the linebreak.if I use
{{ unscape(myString) }}
then the result is still 'some text<br />
next line'