JSON对象在Internet Explorer 8中未定义

目前我正在编写一个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。

其他缺less文档types或错误的文档types,或与HTML语法错误,将迫使IE使用文档模式不同于你的期望。

我在一个testing文档中使用简单的“”,并且没有TITLE标签作为HEAD标签的一个子标签,使得window.JSON变得不确定。

请记住,最好根据浏览器版本testing资源。 而且,如果你的用户可以使用IE来模拟文档模式,那么最好你有一段代码来提供JSON.parse和JSON.stringify,当本地未定义时。

如果页面编码是带有BOM (字节顺序标记)的UTF-8 ,则可能发生尽pipe<!DOCTYPE html> 。 尝试使用合适的文本编辑器将文件保存为不含BOM UTF-8

 function parseJson(jsonString) { if ($.browser.msie && $.browser.version < 8) { return eval('(' + jsonString + ')'); } else { return JSON.parse(jsonString); } } 

把下面的代码放在你的js文件中;

 var JSON = JSON || {}; // implement JSON.stringify serialization JSON.stringify = JSON.stringify || function (obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = '"'+obj+'"'; return String(obj); } else { // recurse array or object var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (t == "string") v = '"'+v+'"'; else if (t == "object" && v !== null) v = JSON.stringify(v); json.push((arr ? "" : '"' + n + '":') + String(v)); } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } }; // implement JSON.parse de-serialization JSON.parse = JSON.parse || function (str) { if (str === "") str = '""'; eval("var p=" + str + ";"); return p; }; 

检查jQuery版本。 jQuery 2.0放弃了对IE 6,7和8的支持 。 改为使用jQuery 1.x,这仍​​然是官方支持的。 你可以使用这个代码。

 <script src="jquery-1.9.0.js"></script> <script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script> 

阅读更多关于jQuery的迁移 。

如果不工作检查这篇文章 。

在我的情况下,未定义的错误是因为我错过了一个JSON库。

你可以像这样添加JSON对象(用你自己的pathreplace相对path):

 <script> if (typeof window.JSON == 'undefined') { document.write('<script src="../scripts/json2.js"><\/script>'); } </script> 

对于json2库: http ://cdnjs.com/libraries/json2/

还有一个json3库: http ://cdnjs.com/libraries/json3/

那么你可以在你的代码中引用它:

 var array = []; array[1] = "apple"; array[2] = "orange"; alert(JSON.stringify(array));