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

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 に答える
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 に答える