もちろん、インターネット接続がないと仮定します。jQueryメソッドのように?
6 に答える
オンラインであることがわかっているいくつかのサーバーに対して、HEADリクエスト(コンテンツはダウンロードされていません)を作成しようとします。ネットワークがない場合(タイムアウトを設定する必要はありません)、これらは自動的に失敗します。
$.ajax({
type: "HEAD",
url: 'http://www.google.com',
error: function() {
alert('world is gone !');
}
});
デモンストレーション(テストするためにネットワークのプラグを抜いてください)
ajaxリクエストを処理している場合は、timeout
エラーをキャッチできます。参考文献を参照error(jqXHR, textStatus, errorThrown)
して$.ajax
ください。
はい、そうです。実際に送信する前に、ajax
電話でサイトのシンプルな軽量サービスに接続して、到達可能かどうかを確認することができます。
呼び出しが失敗した場合は、接続がないと見なすことができます。
失敗したXHRリクエストを利用して、接続を判別できます。数回再試行します。リクエストが通過しない場合は、アラートを送信して正常に失敗します。
http://jamiethompson.co.uk/web/2008/06/17/publish-subscribe-with-jquery/から取得したこの関数を使用できます
$.networkDetection = function(url,interval){
var url = url;
var interval = interval;
online = false;
this.StartPolling = function(){
this.StopPolling();
this.timer = setInterval(poll, interval);
};
this.StopPolling = function(){
clearInterval(this.timer);
};
this.setPollInterval= function(i) {
interval = i;
};
this.getOnlineStatus = function(){
return online;
};
function poll() {
$.ajax({
type: "POST",
url: url,
dataType: "text",
error: function(){
online = false;
$(document).trigger('status.networkDetection',[false]);
},
success: function(){
online = true;
$(document).trigger('status.networkDetection',[true]);
}
});
};
};
そのための1つの方法は、AJAXを使用してフォームを送信することです。次に、サーバーに接続できなかったことを通知するハンドラーがあり、データを保存して、サーバーが利用できないことをユーザーに通知できます。問題がインターネット接続にあるのか、サーバーがダウンしているのかは問題ではありません。
if (navigator.onLine) {
alert('online');
} else {
alert('offline');
}