奇怪的Javascript JSON未定义错误

Nat*_*C-K 4 javascript asp.net json undefined

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

JSON = JSON || {};
Run Code Online (Sandbox Code Playgroud)

该错误表明JSON未定义:

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

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

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

小智 8

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

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

<meta http-equiv="x-ua-compatible" content="IE=8" />
Run Code Online (Sandbox Code Playgroud)


小智 7

你应该使用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 = {};
}
Run Code Online (Sandbox Code Playgroud)