Javascript 无法获取已定义的密钥
假设响应是Javascript 无法获取已定义的密钥,javascript,Javascript,假设响应是{“errmsg”:“Error_BB”}或{“msg”:“I am BB”} 我收到此警报: 错误表明该值未定义 为什么会这样,因为键似乎定义为可以确定比较条件 我不能抛出或产生警报味精。但是,如果key被替换为errmsg或msg(如注释中所示),则它会起作用。使用表达式jsonparsed.key则在jsonparsed对象处请求名为“key”的属性 要检索名称为var值的键,可以使用类似数组的表示法: throw ("Error says:"+jsonparsed[key]);
{“errmsg”:“Error_BB”}
或{“msg”:“I am BB”}
我收到此警报:
错误表明该值未定义
为什么会这样,因为键似乎定义为可以确定比较条件
我不能抛出或产生警报味精。但是,如果key被替换为errmsg或msg(如注释中所示),则它会起作用。使用表达式
jsonparsed.key
则在jsonparsed
对象处请求名为“key”
的属性
要检索名称为var值的键,可以使用类似数组的表示法:
throw ("Error says:"+jsonparsed[key]);
或使用评估功能:
throw ("Error says:"+eval("jsonparsed."+key));
那么,
jsonparsed
没有属性key
,是吗?正如您所说,它要么有errmsg
要么有msg
。因此,jsonparsed.key
是未定义的
也就不足为奇了
如果要访问名称包含在变量中的属性,必须使用括号表示法:
obj[prop]
但是还有更多:Object.getOwnPropertyNames
返回属性名的数组。虽然“errmsg”==key
可能由于隐式类型强制而起作用,但您确实希望获取数组的第一个元素:
var key = Object.getOwnPropertyNames(jsonparsed)[0]; // get first element
if("errmsg" === key) {
throw ("Error says:"+jsonparsed[key]);
}
else {
alert("Data says:"+jsonparsed[key]);
}
钥匙的确切内容是什么?这不是一个数组吗?
var key = Object.getOwnPropertyNames(jsonparsed)[0]; // get first element
if("errmsg" === key) {
throw ("Error says:"+jsonparsed[key]);
}
else {
alert("Data says:"+jsonparsed[key]);
}