我在企业应用程序上有这个流程:
找到提示时会给出JSON响应。类似的东西:
...
"map": {
"id": "1234",
"title": "Title 1",
"permalink": "title-1",
"class": "contentClassA",
"contentType": "Content type ..."
},
...
回到前端JSP,一些Javascript创建了一个列表ov <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(版本7-8-9)属于 else ,无论我尝试什么,返回的classType
变量都是未定义的。
我错过了什么吗?
答案 0 :(得分:1)
我认为你的问题是propertyName "class"
,它是js中的保留关键字。请查看以下链接。
http://javascript.about.com/library/blreserved.htm
即使我遇到与IE类似的问题,我只需将密钥class
重命名为className
答案 1 :(得分:0)
我想知道你对这个逻辑的目的是什么。但是,如果您想检查obj.map
是否有class
密钥,请使用hasOwnProperty
:
if (obj.map.hasOwnProperty('class')) {
// do something with obj.map['class']
}
如果您不知道map
中是否存在obj
,您也可以检查:{/ p>
if ('map' in obj && obj.map.hasOwnProperty('class')) {
//
}
有很多方法可以检查对象中是否存在属性,这取决于您对数据的控制程度以及需要考虑的情况。