Javascript IE上未定义的对象值
我在一个企业应用程序中得到了以下流程:Javascript IE上未定义的对象值,javascript,json,internet-explorer,Javascript,Json,Internet Explorer,我在一个企业应用程序中得到了以下流程: 在每个服务页面上都有一个“搜索框”。当用户开始在其中键入内容时,调用Struts 2操作(通过JQuery自动完成器) 在操作调用中,Hibernate会在MySql数据库上查找有关用户搜索的提示 当发现提示时,会给出JSON响应。比如: ... "map": { "id": "1234", "title": "Title 1", "permalink": "title-1", "class": "conte
...
"map": {
"id": "1234",
"title": "Title 1",
"permalink": "title-1",
"class": "contentClassA",
"contentType": "Content type ..."
},
...
map
对象的数据self.location
重定向,以重新加载页面,区分class
值。这就是问题所在。obj
变量包含一个JSONmap
,如上所述,我这样做:
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(7-8-9版)属于else,并且返回的classType
变量未定义,无论我如何尝试
我遗漏了什么吗?我认为您的问题在于propertyName
“class”
,它是js中的保留关键字。检查下面的链接
即使我在IE上也遇到了类似的问题,我只是简单地将key
class
重命名为className我想你的问题在于propertyName“class”
,这是js中的一个保留关键字。检查下面的链接
即使我在IE上也遇到了类似的问题,我只是简单地将keyclass
重命名为className
我不知道你用这种逻辑有什么目的。但是,如果要检查obj.map
是否有class
键,请使用hasOwnProperty
:
if (obj.map.hasOwnProperty('class')) {
// do something with obj.map['class']
}
如果您不知道map
是否存在于obj
中,您也可以检查:
if ('map' in obj && obj.map.hasOwnProperty('class')) {
//
}
有很多方法可以检查对象中是否存在属性,这一切都取决于您对数据的控制程度以及需要说明的情况。我想知道您使用这种逻辑的目的是什么。但是,如果要检查obj.map
是否有class
键,请使用hasOwnProperty
:
if (obj.map.hasOwnProperty('class')) {
// do something with obj.map['class']
}
如果您不知道map
是否存在于obj
中,您也可以检查:
if ('map' in obj && obj.map.hasOwnProperty('class')) {
//
}
有很多方法可以检查对象中是否存在属性,这一切都取决于您对数据的控制程度以及需要说明的情况。谢谢,但我已经知道键存在并且有值,因为在FF、Chrome和Safari中它可以工作谢谢,但我已经知道键存在并且有值,因为在FF、Chrome和Safari中它是有效的