質問: 1000 * 10; function keepsessionalive() { $.ajax( { type: 'get', url: 'http://www.mywebapp.com/keepalive', success: function(data) { alert('success'); settimeout(function() { keepsessionalive(); }, keepalivetimeout); }, error: function(xmlhttprequest, textstatus, errorthrown) { alert('failure'); settimeout(function() { keepsessionalive(); }, keepalivetimeout); } }); } 実行すると、10秒ごとにアラートボックスの画面に「成功」ポップアップが表示されますが、これは問題ありません。しかし、ネットワークケーブルを抜くとすぐに何も得られず、エラー関数が呼び出されて「失敗」アラートボックスが表示されると期待していましたが、何も起こりません。「エラー」機能は、サーバーから返された「200」以外のステータスコード専用であると仮定して正しいですか? ajax呼び出しを行うときにネットワーク接続の問題を検出する方法はありますか?
回答: この場合、クライアントマシンのネットワークケーブルを引いて呼び出しを行うと、ajax成功ハンドラーが呼び出され(理由はわかりません)、データパラメーターは空の文字列になります。したがって、実際のエラー処理を除外する場合、次のようなことができます。function handleerror(jqxhr, textstatus, errorthrown) { ... } jquery.ajax({ ... success: function(data, textstatus, jqxhr) { if (data == "") handleerror(jqxhr, "clientnetworkerror", ""); }, error: handleerror });