4

もちろん、インターネット接続がないと仮定します。jQueryメソッドのように?

4

6 に答える 6

10

オンラインであることがわかっているいくつかのサーバーに対して、HEADリクエスト(コンテンツはダウンロードされていません)を作成しようとします。ネットワークがない場合(タイムアウトを設定する必要はありません)、これらは自動的に失敗します。

$.ajax({
    type: "HEAD",
    url: 'http://www.google.com',
    error: function() {
        alert('world is gone !');
    }
});

デモンストレーション(テストするためにネットワークのプラグを抜いてください)

于 2012-09-26T17:46:01.797 に答える
2

ajaxリクエストを処理している場合は、timeoutエラーをキャッチできます。参考文献を参照error(jqXHR, textStatus, errorThrown)して$.ajaxください。

于 2012-09-26T17:45:55.780 に答える
1

はい、そうです。実際に送信する前に、ajax電話でサイトのシンプルな軽量サービスに接続して、到達可能かどうかを確認することができます。

呼び出しが失敗した場合は、接続がないと見なすことができます。

于 2012-09-26T17:45:34.923 に答える
0

失敗した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]);
            }
        });
    };
};
于 2012-09-26T17:51:00.803 に答える
0

そのための1つの方法は、AJAXを使用してフォームを送信することです。次に、サーバーに接続できなかったことを通知するハンドラーがあり、データを保存して、サーバーが利用できないことをユーザーに通知できます。問題がインターネット接続にあるのか、サーバーがダウンしているのかは問題ではありません。

于 2012-09-26T17:59:50.207 に答える
-2
if (navigator.onLine) {
  alert('online');
} else {
  alert('offline');
}
于 2012-09-26T17:59:54.020 に答える