Extjs 如何在出现';没有互联网连接

Extjs 如何在出现';没有互联网连接,extjs,cordova,sencha-touch,sencha-touch-2,Extjs,Cordova,Sencha Touch,Sencha Touch 2,我需要提醒用户以下情况 请求超时 没有互联网连接 无法访问服务器 这是代码;如何在发生以下情况时捕获并提醒用户 failure: function (response) { var text = response.responseText; console.log("FAILED"); },success: function (response) { var text = response.responseText; console.log("SUCCESS");

我需要提醒用户以下情况

  • 请求超时
  • 没有互联网连接
  • 无法访问服务器
  • 这是代码;如何在发生以下情况时捕获并提醒用户

    failure: function (response) {
        var text = response.responseText;
        console.log("FAILED");
    },success: function (response) {
        var text = response.responseText;
        console.log("SUCCESS");
    }
    
    我尝试了下面的代码来检查是否可以访问internet,但没有成功

    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>
    
    
    函数ondevicerady(){
    document.addEventListener(“脱机”,函数(){
    警报(“无互联网连接”);
    },假);
    }
    
    您可以使用

    document.addEventListener("offline", youCallbackFn, false);
    
    网络对象允许访问设备的蜂窝和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]);
      }
    

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

    例如,您的“DeviceRady”回调:

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

    此代码适用于PhoneGap的大多数所有版本。它至少从1.0版本就开始使用了。

    正如Simon所说,您可以使用

    document.addEventListener("offline", youCallbackFn, false);
    
    或者您可以询问布尔属性

    navigator.onLine
    
    (应返回true或false)


    不过,此技术将告诉您设备是否已连接。注意事项是,设备可以连接到WiFi,但路由器可能处于脱机状态。在这种情况下,可以使用轮询机制,如Timedal
    Ext.Ajax.request
    ,以减少超时。超时过期=脱机。

    您可以在应用程序的app.js中添加“Ext.device.Connection”。并使用以下代码检查您的设备处于联机或脱机状态:

    if (Ext.device.Connection.isOnline()) {
             alert('Connected to internet');
          }
          else{
             alert('You are not connected to internet');
          }
    

    只需将其嵌入到标签中

    <body onoffline="alert('PLEASE CHECK YOUR INTERNET SETTING');">
    
    
    
    控制台日志上抛出了什么错误/警告?我应该在哪里添加上述函数(
    ondevicerady
    reachable callback
    )。是否在
    app.js
    中?您可以直接包括
    navigator.network.isReachable(“phonegap.com”,reachable callback,{})行,用于测试网络连接并添加回调函数的任何位置。最新版本的PhoneGap中不推荐使用IsRecable方法。请确保您在manifest.xml中具有INTERNET和READ_PHONE_STATE权限。另外,如果您最近将PhoneGap升级到1.6或1.7,请确保您的plugins.xml引用的是“NetworkStatus”而不是“NetworkStatus”,名称已更改以删除该空间。@SimonMacDonald:我关闭了Wi-Fi,尝试了所有代码,但没有得到结果。那是因为我在模拟器上吗??我用科尔多瓦2。0@alibm这很难说。您可能没有收到脱机事件,因为仿真器可以伪造3G连接。尝试将模拟器置于飞行模式。太棒了,西蒙!非常感谢:-)