6

我需要在以下情况下提醒用户;

  1. 请求超时
  2. 没有网络连接
  3. 无法访问服务器

这是代码;如何在发生以下情况时捕获并提醒用户?

failure: function (response) {
    var text = response.responseText;
    console.log("FAILED");
},success: function (response) {
    var text = response.responseText;
    console.log("SUCCESS");
}

我尝试了以下代码来检查互联网是否可以访问,但它不起作用

var networkState = navigator.network.connection.type
    alert(states[networkState]);
    if (networkState == Connection.NONE){
        alert('No internet ');
    };

更新 **

我在 index.html 中添加了以下内容,但是,当我禁用 WIFI 时,我看不到警报弹出。

<script>
function onDeviceReady() {
    document.addEventListener("offline", function() {
        alert("No internet connection");
    }, false);
}
</script>
4

5 回答 5

19

最好的办法是收听“离线”事件。当您收到离线事件时,您可以警告您的用户并采取任何必要的步骤来保存数据等。

例如,您的“设备就绪”回调:

document.addEventListener("offline", function() {
    alert("No internet connection");
}, false);

此代码应该适用于所有版本的 PhoneGap。至少从 1.0 版本开始就已经存在。

于 2012-05-07T14:39:58.983 回答
3

正如西蒙所说,你可以使用

document.addEventListener("offline", youCallbackFn, false);

或者您可以询问布尔属性

navigator.onLine

(应该返回真或假)

但是,此技术会告诉您设备是否已连接。需要注意的是,设备可以连接到 WiFi,但路由器可能处于离线状态。在这种情况下,请使用轮询机制,例如及时Ext.Ajax.request超时。超时过期 = 离线。

于 2012-05-07T17:40:03.720 回答
1

您可以在应用程序的 app.js 中添加“Ext.device.Connection”。并使用代码检查您的设备是在线还是离线:

if (Ext.device.Connection.isOnline()) {
         alert('Connected to internet');
      }
      else{
         alert('You are not connected to internet');
      }
于 2014-02-17T06:32:22.397 回答
1

您可以使用PhoneGap 的 NETWORK API

网络对象可以访问设备的蜂窝和 wifi 连接信息。

您可以通过以下方式对其进行测试,

 function onDeviceReady() {
        navigator.network.isReachable("phonegap.com", reachableCallback, {});
    }

 // Check network status
 //
 function reachableCallback(reachability) {
     // There is no consistency on the format of reachability
     var networkState = reachability.code || reachability;
     var states = {};
     states[NetworkStatus.NOT_REACHABLE]  = 'No network connection';
     states[NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK] = 'Carrier data connection';
     states[NetworkStatus.REACHABLE_VIA_WIFI_NETWORK] = 'WiFi connection';

     alert('Connection type: ' + states[networkState]);
  }
于 2012-05-07T12:32:22.223 回答
0

只需将其嵌入您的标签中

<body onoffline="alert('PLEASE CHECK YOUR INTERNET SETTING');">
于 2015-02-07T08:09:34.980 回答