我的页面中有一个弹出式对话框,有20个字段。可以修改20个字段,对话框的任何更改都将更新到服务器。
仅在IE8中,当用户尝试清除字段并保存内容时,字段值将设置为null
。
使用IE8的原生JSON.stringfy
函数序列化空 DOM元素的值似乎是返回"null"
(字符串)而不是""
DEMO: http://jsfiddle.net/6VKzy/2/ [在IE8中打开]
有关博客问题的详细信息,
在IE8中启用了本机JSON支持,用户现在可以利用它 用于序列化和内置的JSON.stringify和JSON.parse方法 将JScript值反序列化为JSON文本,反之亦然。 然而,那里 是IE8的本机JSON实现中的已知问题,其中如果a user尝试读取空DOM元素的值,并序列化 使用原生JSON相同,结果与用户不一样 期待序列化“” 。
注意:这个问题是自我解答的。
答案 0 :(得分:4)
修复方法是使用下面的审查功能返回""
而不是"null"
。
function(k, v) { return v === "" ? "" : v }
修正了DEMO: http://jsfiddle.net/6VKzy/3/ [在IE8中打开以验证修复]
博客中修复的更多细节和不同方法
这是IE8生产版中的一个错误。这里的问题是 在DOM中,使用特殊编码来表示缺失 字符串值。即使这个特殊的价值不同于 在整个JScript中编码JScript文字“” 实现该值被视为===到“”,除了a JSON.stringify中的特定情况。
由于此特殊值仅来自对DOM对象的访问, 解决方法是在每次DOM访问时明确审查它们 可能会返回一个。