在JS中,我有一个字典,我用json(json2)字符串化:
my_dict = {"1":"hi you'll", "2":"hello"};
as_string = JSON.stringify(my_dict);
我需要将此值作为值添加到表单中,但表单本身以字符串开头:
var my_form = '<form><input value = "'+as_string+'"></form>'
my_form是一个字符串,因为它作为DOM添加到文档中(创建节点,添加innerHTML,插入文档中)
问题是双引号搞砸了 - my_dict中有引号,my_form中引用了引号。但是,json应该是逃避双重qoutes吗?这不是它的作用吗?或者我需要这样做吗?还是有其他方法吗?
答案 0 :(得分:4)
您需要使用RegExp编码HTML,f.ex的字符串:
as_string = JSON.stringify(my_dict).replace(/\"/g,'"');
如果可能,请使用DOM操作。
答案 1 :(得分:3)
my_form是一个字符串,因为它作为DOM添加到文档中(创建节点,添加innerHTML,插入文档中)
通过粉碎字符串来生成代码比使用它更值得痛苦。不要这样做。使用标准DOM,而不是innerHTML。这将为你逃避。
var frm = document.createElement('form');
var ipt = document.createElement('input');
ipt.value = as_string;
frm.appendChild(ipt);
但是json应该逃脱双重qoutes吗?
编码为JSON将转义JSON格式的引号。然后,您将JSON嵌入到HTML中,因此您也需要将其转义为HTML。 (或者,正如我上面推荐的那样,绕过HTML并直接进行DOM操作)。
答案 2 :(得分:0)