添加具有JSON值的属性

时间:2016-07-03 21:29:56

标签: javascript jquery json escaping

我想通过jQuery在data-属性中添加和存储json。 问题是:当我添加包含json和转义双引号的属性时,它会添加精确的"而不是转义的双引号。

输出:

<div data-myjson="{&quot;number&quot;:&quot;1&quot;}"></div>

预期:浏览器应将&quot;视为双引号,而不是普通字符

<div data-myjson="{"number":"1"}"></div>  // with escaped inner quotes

我的jquery

$("div").attr("data-myjson", "{&quot;number&quot;:&quot;1&quot;}");

如何在HTML本身中添加实际转义的双引号?

3 个答案:

答案 0 :(得分:0)

如何使用JSON.stringify(和JSON.parse来提取)?

var o = {"number":"1"};
$("div").attr("data-myjson", JSON.stringify(o));

答案 1 :(得分:0)

除非我误解,如果包含var str = '{&quot;number&quot;:&quot;1&quot;}'; $("div").attr("data-myjson", $('<div/>').html(str).text()); 的文本是如上所述的纯字符串,那么如何解码它:

{{1}}

答案 2 :(得分:0)

由于attr采用字符串值(而不是&#34; HTML&#34;),只需使用单引号(')然后传入实际 [JSON]值:

$("div").attr("data-myjson", '{"number":"1"}');

HTML实体(包括&quote;)未在CDATA部分中处理,例如<script>标记的内容。

术语nit:attr更新[HTML] DOM,它是表示文档的树图,但不是更新DOM最初解析的HTML源/文本。只有少数功能如html考虑数据&#34; as&#34; HTML。