我正在使用Ajax / jsonp来访问远程数据库。因此,永远不会返回response.error。当远程服务器因任何原因没有返回数据时,我正试图捕获一个实例。我已经尝试了一切我能想到的东西来捕捉一个未定义的条件,我似乎无法抓住它。我试图用Firebug找到变量。我已经尝试使用以下代码的每个组合,我能想到的,似乎无法让它工作。
if ( typeof(data.flightStatuses[0].operationalTimes.publishedDeparture.dateLocal) === "undefined") {
alert("flightstats is undefined");
}
任何想法都非常感谢!!!!
我也尝试过:
if ( typeof data.flightStatuses === "undefined") {
alert("flightstats is undefined");
}
上面的代码也不会执行警告......
最后!这工作......
if ( typeof data.flightStatuses[0] === "undefined")
我真的不知道为什么,但确实如此。谢谢大家的帮助!
答案 0 :(得分:2)
如果data.flightStatuses
未定义,则data.flightStatuses[0]
将引发错误。让您只检查相关标识符是否未定义:
if(typeof data.flightStatuses === "undefined") {
alert("flightStatuses is undefined");
} else {
// Here you know data.flightStatuses exists, so you can test data.flightStatuses[0]
if(typeof data.flightStatuses[0] === 'undefined'){
alert("flightStatuses[0] is undefined");
} else {
// And so on, depending on how much you know about your data source
}
}
答案 1 :(得分:2)
这似乎有效
try {
dateLocal = typeof (data.flightStatuses[0].operationalTimes.publishedDeparture.dateLocal) !== 'undefined' ? true : false;
if (dateLocal) {
// Do something with dateLocal
// ...
}
}
catch (err) {
alert("flightstats is undefined: " + err);
}
答案 2 :(得分:0)
这可行吗?
if (data.flightStatuses[0].operationalTimes.publishedDeparture.dateLocal) === null) {
alert("flightstats is undefined");
}