4

我正在使用 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")

我真的不知道为什么,但确实如此。谢谢大家的帮助!

4

3 回答 3

2

这似乎有效

   try {
        dateLocal = typeof (data.flightStatuses[0].operationalTimes.publishedDeparture.dateLocal) !== 'undefined';
        if (dateLocal) {
            // Do something with dateLocal
            // ...
        }
    }
    catch (err) {
        alert("flightstats is undefined: " + err);
    }
于 2013-09-10T15:25:21.143 回答
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
    }
}
于 2013-09-10T15:20:37.007 回答
0

这能行吗?

if (data.flightStatuses[0].operationalTimes.publishedDeparture.dateLocal) === null) {
                        alert("flightstats is undefined");
                    }
于 2013-09-10T15:21:53.560 回答