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

一种方法是使用 AJAX 发送表单。然后你会有一个处理程序,它会告诉你它无法连接到服务器,你可以保存数据并通知用户服务器不可用。问题是您的互联网连接还是服务器可能已关闭并不重要。

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