我在json中有html已经编码(通过c#)到:
{"itemID":6,"GlossaryWord":"ante","GlossaryDescription":"\u003cp\u003e\r\n\t\u003cstrong\u003eUp the ante\u0026nbsp;\u003c/strong\u003e\u003c/p\u003e\r\n\u003cul\u003e\r\n\t\u003cli\u003e\r\n\t\t\u003cstrong\u003eHere\u003c/strong\u003e\u003c/li\u003e\r\n\t\u003cli\u003e\r\n\t\t\u003cstrong\u003eis\u0026nbsp;\u003c/strong\u003e\u003c/li\u003e\r\n\t\u003cli\u003e\r\n\t\t\u003cb\u003esomething\u003c/b\u003e\u003c/li\u003e\r\n\u003c/ul\u003e\r\n","CategoryID":6}
但是我如何解码JavaScript / AngularJS中的GlossaryDescription,以便它显示html标签,如<p>
&amp; <strong>
等?一如既往地谢谢:)
答案 0 :(得分:4)
你不需要做任何事情。字符串"\u003cp\u003e"
(例如)实际上并未以需要解码的方式进行编码 - 它完全等同于"<p>"
。如果您在控制台中输入"\u003cp\u003e" == "<p>"
,则会看到它返回true
。由于&#34;编码&#34; string与非&#34;编码&#34;完全相同字符串,你可以完全相同的方式使用它们。看看:
var obj = {"itemID":6,"GlossaryWord":"ante","GlossaryDescription":"\u003cp\u003e\r\n\t\u003cstrong\u003eUp the ante\u0026nbsp;\u003c/strong\u003e\u003c/p\u003e\r\n\u003cul\u003e\r\n\t\u003cli\u003e\r\n\t\t\u003cstrong\u003eHere\u003c/strong\u003e\u003c/li\u003e\r\n\t\u003cli\u003e\r\n\t\t\u003cstrong\u003eis\u0026nbsp;\u003c/strong\u003e\u003c/li\u003e\r\n\t\u003cli\u003e\r\n\t\t\u003cb\u003esomething\u003c/b\u003e\u003c/li\u003e\r\n\u003c/ul\u003e\r\n","CategoryID":6};
document.write(obj.GlossaryDescription);
&#13;
答案 1 :(得分:0)
尝试:
var htmlToUse = "<a class=\"gobig tooltip\" "
+ "title=\""
+ data[i].GlossaryDescription
+ "\">"
+ data[i].GlossaryWord.trim().toLowerCase()
+ ",</a>";
$('#HtmlParentContainer').html(htmlToUse);
正如Jordan所指出的,您无需更改字段的内容。您需要做的就是使用JavaScript(和jQuery)将现有HTML替换为您生成的新HTML。如果您不想使用JavaScript innerHTML,那么您可以使用jQuery&#39; html()。
注意:如果您将GlossaryDescription
字段应用于title
等元素属性,则其中不应包含HTML。此外,上面的代码就好像数据是一个数组,但你的例子却没有。因此,JSFiddle会删除[i]