在json

时间:2015-07-07 16:34:51

标签: javascript c# html json angularjs

我在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>等?一如既往地谢谢:)

2 个答案:

答案 0 :(得分:4)

你不需要做任何事情。字符串"\u003cp\u003e"(例如)实际上并未以需要解码的方式进行编码 - 它完全等同于"<p>"。如果您在控制台中输入"\u003cp\u003e" == "<p>",则会看到它返回true。由于&#34;编码&#34; string与非&#34;编码&#34;完全相同字符串,你可以完全相同的方式使用它们。看看:

&#13;
&#13;
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;
&#13;
&#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()

JSFiddle

注意:如果您将GlossaryDescription字段应用于title等元素属性,则其中不应包含HTML。此外,上面的代码就好像数据是一个数组,但你的例子却没有。因此,JSFiddle会删除[i]