[英]JSON.stringfy function returns “null” when serializing empty DOM element in IE8
我的页面上有一个弹出对话框,其中包含20个字段。 可以修改20个字段,对对话框的任何更改都将更新到服务器。
仅在IE8中,当用户尝试清除字段并保存内容时,字段值设置为null
。
似乎使用IE8的本机JSON.stringfy
序列化空 DOM元素的值JSON.stringfy
函数返回"null"
(字符串)而不是""
演示: http : //jsfiddle.net/6VKzy/2/ [在IE8中打开]
有关博客的更多详细信息,
通过在IE8中启用本机JSON支持,用户现在可以利用内置的JSON.stringify和JSON.parse方法来将JScript值序列化和反序列化为JSON文本,反之亦然。 但是,IE8的本机JSON实现中存在一个已知问题,其中,如果用户尝试读取一个空DOM元素的值,并使用本机JSON对其进行序列化,则结果与用户在序列化“ “ 。
注意:这个问题是自我回答。
解决方法是使用如下检查器函数返回""
而不是"null"
。
function(k, v) { return v === "" ? "" : v }
固定的DEMO: http : //jsfiddle.net/6VKzy/3/ [在IE8中打开以验证该修复程序]
博客中的更多详细信息和不同的修复方法,
这是IE8生产版本中的错误。 这里的问题是在DOM中使用特殊的编码来表示缺少的字符串值。 即使此特殊值与JScript文字“”的编码不同,但在整个JScript实现中,该值都被视为===到“”,除了JSON.stringify中的特定情况。
由于此特殊值仅源自对DOM对象的访问,因此一种解决方法是在可能返回一个DOM的每个DOM访问中显式审查它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.