奇怪的 Javascript JSON 未定义错误
-
05-07-2019 - |
题
我遇到了一个错误,我在任何地方都找不到任何提及。我正在使用 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 || {};