Cordova / AngularJS / Ionic:检查在线和域名是否可访问

时间:2014-10-08 19:12:03

标签: javascript angularjs cordova ionic-framework

我正在开发一个应用程序,我想从我的服务器动态下载内容(JSON)。在下载开始之前,我想检查设备是否在线并且我的服务器是否可以访问。

使用Cordova,您可以轻松获取网络信息(WiFiCellularNone,...)。但我发现需要VPN连接的WiFi网络存在问题。没有VPN Cordova返回WiFi但应用程序无法连接到服务器。如何检查服务器是否可以访问?

我使用Cordova和Ionic Framework(使用AngularJS)和AngularJS的$http功能来下载我的数据。

以下是我当前的isOnline()服务:

function() {
    var is_online;

    var network_state = navigator.connection.type;

    return ((network_state == 'unknown') || (network_state == 'none')) ? false : true;
}

这是我下载数​​据的方式:

if(isOnline()) {
    var url = 'http://domain.com/file.json';

    $http({
        method: 'GET',
        url: url
    })
    .success(function(data, status, headers, config) {
        // save data
    })
    .error(function(data, status, headers, config) {
        // error
    });
}

不幸的是,如果无法访问服务器,则下载功能不会转到错误功能。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

在您的WiFi / VPN情况下,我会说错误功能没有被点击,因为您的$ http仍在尝试检索数据,并且不知道VPN正在阻止它。

你有没有等待一段时间才能超时?尝试为调试目的指定一个低超时值,并检查是否随后调用错误函数。