javascript - 使用 jquery 检查 Internet 连接

标签 javascript jquery jquery-deferred

我正在尝试通过向服务器发送 GET 请求来检查互联网连接。我是 jquery 和 javascript 的初学者。我没有为我的代码使用 navigator.onLine,因为它在不同浏览器中的工作方式不同。到目前为止,这是我的代码:

var check_connectivity={
        is_internet_connected : function(){
            var dfd = new $.Deferred();
            $.get("/app/check_connectivity/")
            .done(function(resp){
                return dfd.resolve();
            })
            .fail(function(resp){
                return dfd.reject(resp);
            })
            return dfd.promise();
        },
}

我在不同的文件中将此代码称为:

if(!this.internet_connected())
        {
            console.log("internet not connected");
            //Perform actions
        }
internet_connected : function(){
        return check_connectivity.is_internet_connected();
},

is_internet_connected() 函数返回一个延迟对象,而我只需要一个真/假的答案。谁能告诉我如何实现这一点?

最佳答案

$.get() 返回一个 jqXHR 对象,它与 promise 兼容 - 因此无需创建您自己的 $.Deferred

var check_connectivity = {
    ...
    is_internet_connected: function() {
        return $.get({
            url: "/app/check_connectivity/",
            dataType: 'text',
            cache: false
        });
    },
    ...
};

然后:

check_connectivity.is_internet_connected().done(function() {
    //The resource is accessible - you are **probably** online.
}).fail(function(jqXHR, textStatus, errorThrown) {
    //Something went wrong. Test textStatus/errorThrown to find out what. You may be offline.
});

如您所见,无法确定您是在线还是离线。所有 javascript/jQuery 都知道资源是否被成功访问。

一般来说,了解资源是否被成功访问(并且响应很酷)比了解您的在线状态本身更有用。每个 ajax 调用都可以(并且应该)有自己的 .done().fail() 分支,无论请求的结果如何,都可以采取适当的操作。

关于javascript - 使用 jquery 检查 Internet 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20043215/

相关文章:

javascript - JS_of_ocaml - 获取 cookie 时出错

javascript - 成对交换 div 内的元素

javascript - 清除/重新初始化 Highchart

javascript - 如何创建一个 jQuery 加载栏? (就像 Flash 网站上使用的那样)

javascript - 将变量列表动态包含到 Jquery 函数中作为参数

javascript - Node/npm : File to import not found when compiling scss with node-sass

javascript - PeerJS 文字聊天

javascript - javascript中的数组搜索

javascript - 带有固定顶栏的移动滑动菜单

jQuery.Deferred()/GWT 中的 Promises 功能?