IE上未定义对象值
Object values undefined on IE
我在一个企业应用程序上有这样的流程:
- 在每个服务页面上都有一个"搜索框"。当用户开始在其中键入内容时,将触发对Struts2操作的调用(通过JQuery自动补全器)
- 在操作调用中,Hibernate在MySql数据库上的用户搜索中查找提示
-
当发现提示时,会给出JSON响应。类似于:
... "map": { "id": "1234", "title": "Title 1", "permalink": "title-1", "class": "contentClassA", "contentType": "Content type ..." }, ...
-
回到前端JSP,一些Javascript创建了一个
<div>
的列表,每个列表都包含一个map
对象的数据。
步骤1-4适用于Firefox版本11和Internet Explorer版本9。然后,通过Javascript,我尝试构建一个self.location
重定向,以重新加载区分class
值的页面。这就是问题所在。如上所述,obj
变量包含一个JSON map
,我这样做:
var classType;
if(obj['class'] != undefined) {
classType = obj['class'];
} else {
//classType = obj.map.class;
//classType = obj['map'].class;
//classType = obj.class;
// ...
classType = obj.map['class'];
}
FF上一切正常,但IE(ver.7-8-9)属于else,无论我尝试什么,返回的classType
变量都是未定义的。
我是不是错过了什么?
我认为您的问题在于propertyName "class"
,这是js中的一个保留关键字。检查下面的链接。
http://javascript.about.com/library/blreserved.htm
即使我在IE中遇到了类似的问题,我也只是将密钥class
重命名为className
我想知道您使用此逻辑的目的是什么。但是,如果您想检查obj.map
是否有class
密钥,请使用hasOwnProperty
:
if (obj.map.hasOwnProperty('class')) {
// do something with obj.map['class']
}
如果你不知道obj
中是否存在map
,你也可以检查一下:
if ('map' in obj && obj.map.hasOwnProperty('class')) {
//
}
有很多方法可以检查对象中是否存在属性,这都取决于您对数据的控制程度以及需要考虑的情况。
相关文章:
- 在CoffeeScript文件上运行Jasmine测试时,对象未定义错误
- JavaScript 对象 - 未定义的数字键文字
- 为什么页面方法对象未定义
- JavaScript对象表示嵌套对象未定义
- Javascript类构造的对象未定义
- JQuery TypeError:对象未定义(length=object.length,)
- 用于从许多带有“for”循环的URL中获取HTML信息的X射线使对象未定义
- 如何避免收到一条消息,指出对象未定义
- JavaScript 对象未定义
- JavaScript 对象未定义它是否在几年前工作
- 揭示模块模式:对象未定义
- 对象未定义/HTML使用jQuery输出
- 为什么子 html 对象未定义/空
- 提取 JSON 对象未定义
- 为什么这个带有最简单的构造函数的 javascript 对象未定义
- “对象”未定义日历.js
- 对象未定义到模块中,Nodejs javascript
- javascript对象未定义
- Twilio响应对象未定义,但没有错误
- 为什么"对象未定义”;在这种情况下没有抛出错误