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

JSON = JSON || {};

该错误表明 JSON 未定义:

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

嗯,呃!这就是为什么该行正在测试它是否已定义,如果是,则将其设置为空对象!它应该是未定义的,对吧?最后我听说对未定义的变量执行这样的操作并不是 JavaScript 中的错误。

谁能告诉我这里发生了什么事吗?我怀疑是其他地方出了问题,导致了这个问题。我对 Javascript 或 ASP.NET 都没有丰富的经验,所以我可能在设置中遗漏了一些常见的问题。

有帮助吗?

解决方案

您应该使用 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 = {};
}

其他提示

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

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

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

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

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

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

我在尝试使用谷歌地图“街景”时遇到了同样的问题。街景窗口将完全变黑,状态栏中会出现指示错误的图标。我像 webdev007 一样禁用了 DivX,问题就解决了!Webdev,你真是个天才!谢谢!

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

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

对我而言,当我在表达式之前添加var时,它会起作用:

var JSON = JSON || {};
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top