在Internet Explorer中,“JSON”是JavaScript中的未定义错误

我们在我们的应用程序中使用jQuery。 我们使用了一个jQuery插件来实现JavaScript会话。

它在Firefox和大多数Internet Explorer 8浏览器中正常工作。

但在某些Internet Explorer 8浏览器中不起作用。 它给出了以下错误。

Message: 'JSON' is undefined Line: 6 Char: 3 Code: 0 Message: '$.namesession' is null or not an object Line: 53 Char: 2 Code: 0 

`

两种情况下的Internet Explorer版本都是一样的。

但是Internet Explorer设置有一些不同之处,如“ 使用SSL3.0”和“Internet选项”的“高级”选项卡中的“ 启用智能屏幕过滤​​器”checkbox未被选中。

当我们检查它,它开始工作。 当我们不检查它们时,它仍然在工作。

IE8中的实际问题是什么?

也许这不是你正在寻找的,但我有一个类似的问题,我解决了它,包括JSON 2到我的应用程序:

https://github.com/douglascrockford/JSON-js

其他浏览器原生实现JSON,但IE <8(也IE 8兼容模式)不,这就是为什么你需要包括它。

这里有一个相关的问题: IE6上的JSON(IE7)

UPDATE

JSONparsing器已经更新,所以你应该使用新的: http : //bestiejs.github.io/json3/

 <!DOCTYPE html> 

否则IE8是不正确的。 你也应该使用:

 <meta http-equiv="X-UA-Compatible" content="IE=EDGE" /> 

请在您的项目中添加json2.js。 我遇到了同样的问题,我已经修复。

请使用链接: https : json.js并创build新的文件json.js ,复制页面,并过去到新创build的文件,并将该文件移动到您的Web应用程序。

我希望这会起作用。

在您的JSON响应中检查额外的逗号。 如果一个数组的最后一个元素有一个逗号,这将在IE中破解

将内容types更改为“application / x-www-form-urlencoded”

我有这个错误2次。 每次通过改变ajaxtypes来解决它。 GET到POST或POST到GET。

 $.ajax({ type:'GET', // or 'POST' url: "file.cfm?action=get_table&varb=" + varb }); 

我最近有同样的问题。 在我的情况下,在一个PHP脚本的顶部,我有一些代码generationg显然是一些额外的输出到浏览器。 删除空行(?>和html-tag之间)和简单的清理帮助我:

 <?php include('../config.php'); // ob_clean(); ?> <!DOCTYPE html>