目前我正在编写一个 JavaScript 文件并有以下几行:
var res = "JSON=" + JSON.stringify(result);
结果被设置在这条线的正上方。我遇到的问题是 IE8(仅限 IE8)向我报告 JSON 以某种方式未定义。我不知道该怎么做,因为据我所知,IE8 是一个实现了 JSON 支持的浏览器。有谁知道会发生什么?
目前我正在编写一个 JavaScript 文件并有以下几行:
var res = "JSON=" + JSON.stringify(result);
结果被设置在这条线的正上方。我遇到的问题是 IE8(仅限 IE8)向我报告 JSON 以某种方式未定义。我不知道该怎么做,因为据我所知,IE8 是一个实现了 JSON 支持的浏览器。有谁知道会发生什么?
通过使用首选方法,即标准文档类型,确保您实际上处于 IE 8 模式...
<!DOCTYPE html>
...或不需要的方法,X-UA-Compatible
元标记/标题...
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
有关更多信息,请参阅定义文档兼容性。
使用jQuery.parseJSON为我解决了这个问题,以防您已经在使用 JQuery。
其他缺少 doctype 或错误的 doctype 或 html 语法错误的其他事情将迫使 IE 使用与您期望不同的文档模式。
我在测试文档中使用了简单的 "" 并且没有 TITLE 标记作为 HEAD 标记的子级使 window.JSON 变得未定义。
请始终记住,最好针对浏览器版本测试资源。而且,如果您的用户可以使用 IE 来模拟文档模式,那么您最好有一段代码来在未定义本机时提供 JSON.parse 和 JSON.stringify。
function parseJson(jsonString) {
if ($.browser.msie && $.browser.version < 8) {
return eval('(' + jsonString + ')');
}
else {
return JSON.parse(jsonString);
}
}
尽管<!DOCTYPE html>
页面编码UTF-8
带有BOM
(字节顺序标记),但仍可能发生。尝试使用合适的文本编辑器将文件另存为UTF-8
without BOM
。