我在html DOM中的表单是一个单击的复选框(可以有多个)。当我使用撇号时,问题出现在描述字符串中,因为我的列表对象是单引号删除的。这是表单中的复选框之一:
<input type="checkbox" id="cbx" name="cbx" value="{'getPic': 'url', 'picsrc': 'http://lh3.ggpht.com/_ZB3cttqooN0/SVmJPfusGWI/AAAAAAAADvA/GuIRgh6eMOI/Grand%20Canyon%201213_121508214.JPG', 'pos': None, 'description': 'Here's what it REALLY looks like at 5:30am! Bring your headlight!'}">
读取已选中复选框值的javascript并将其推送到数组(列表)中:
var pylist = [];
for (i=0; i<document.picList.cbx.length; i++) {
if (document.picList.cbx[i].checked) {
pylist.push( document.picList.cbx[i].value );
}
}
var getstr = JSON.stringify(pylist);
问题始终是,在描述属性中的单引号之后,此时的gettr已经切断了。 我已经尝试了不同的方法来逃避它。但
答案 0 :(得分:1)
问题是复选框的值已经是JSON字符串。一种解决方案是在值上调用JSON.parse():
var pylist = [];
for (i=0; i<document.picList.cbx.length; i++) {
if (document.picList.cbx[i].checked) {
pylist.push( JSON.parse( document.picList.cbx[i].value) );
}
}
var getstr = JSON.stringify(pylist);
答案 1 :(得分:0)
我遇到了同样的问题 - 我们将json粘贴在隐藏字段中,这样我们就不必在每个页面上查询服务器了。我们在放入html之前用“代码”替换撇号 - 我们添加了一个用撇号替换代码的javascript函数。
真的很hacky,但它确实很好用。当然,我们在代码中有一个地方从服务器获取json,javascript需要解析它的一个地方 - 如果你发现你在整个代码中重复这些方法,你的里程会有所不同。