Json 返回了我的 HTML
>采用 unicode 形式 \u003cbr /\u003e 。导致
>作为文本打印而不是换行

发布于 2024-10-14 08:19:52 字数 877 浏览 1 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

穿越时光隧道 2024-10-21 08:19:52

我遇到了同样的问题。不需要编码/解码或转义/转义。

代替这个:

${Content}

使用这个:

{{html Content}}

将 unicode 显示为 HTML。

I ran into this same issue. No need encode/decode or escape/unescape.

Instead of this:

${Content}

Use this:

{{html Content}}

The unicode with be displayed as HTML.

花心好男孩 2024-10-21 08:19:52

您应该对内容字符串进行转义,例如:

alert(unescape('\u003cbr /\u003e'));

You should unescape your Content string, e.g.:

alert(unescape('\u003cbr /\u003e'));
这个俗人 2024-10-21 08:19:52

我对 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'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文