繁体   English   中英

奇怪的Javascript JSON未定义错误

[英]Bizarre Javascript JSON undefined error

我遇到了一个错误,我无法在任何地方找到任何提及。 我正在使用ASP.NET开发支持AJAX的WCF Web服务。 在我的ASP.NET母版页的<asp:ScriptManager>中,我包含了json.js文件,该文件是从json.org复制的。 当我运行该页面时,它在json.js中的第一行代码(遵循大量注释)失败(VS 2008捕获Javascript异常),这是:

JSON = JSON || {};

该错误表明JSON未定义:

Microsoft JScript运行时错误:'JSON'未定义

好吧,呃! 这就是为什么线路正在测试它是否被定义,如果是这样,将它设置为空对象! 它应该是未定义的,对吧? 最后我听说在Javascript中对未定义的变量执行此类操作不是错误。

谁能给我一个关于这里发生了什么的线索? 我怀疑其他地方出了问题,不知何故导致了这个问题。 我没有使用Javascript或ASP.NET的丰富经验,所以可能是我在设置中缺少一些常见问题。

我会确保您的页面在IE8标准模式下呈现; 我发现如果文档是在Quirks或IE7模式下渲染,则this.JSON是未定义的。

您可以通过在页面上包含以下元标记来强制IE8在IE8标准模式下呈现:

<meta http-equiv="x-ua-compatible" content="IE=8" />

你应该使用json2.js 违规行已更改:

// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.

if (!this.JSON) {
    this.JSON = {};
}

如前所述,您应该使用json2。

然而,错误源于MS处理全局变量。 试试window.JSON = window.JSON || {}; 从那时起,JSON应该可以正常工作。

你可能要做var JSON = JSON || {}; var JSON = JSON || {}; 我在IE8中遇到过类似的Javascript问题。

我尝试使用谷歌地图“街景”时遇到了同样的问题。 街景窗口会变成全黑,我会在状态栏中看到一个错误指示。 我在webdev007上禁用了D​​ivX,问题解决了! Webdev,你是个天才! 谢谢!

我有同样的错误,我已经在使用json2;

对我来说,当我在表达式之前添加var时它可以工作:

var JSON = JSON || {};

我最近开始收到JSON未定义的JavaScript错误,发现问题是由于最近在IE中添加了DivX。 DivX添加也导致在具有所有https引用且没有http引用的网页上发出安全内容警告(我将显示混合内容设置为在Web开发期间更正引用的提示)。 禁用DivX添加后,JSON未定义的JavaScript错误消失,以及错误的安全内容警告弹出窗口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM