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

最善の方法は、「オフライン」イベントを聞くことです。オフライン イベントを取得すると、ユーザーに警告し、データの保存などに必要な手順を実行できます。

たとえば、「deviceready」コールバックは次のようになります。

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

(trueまたはfalseを返す必要があります)

ただし、この手法では、デバイスが接続されているかどうかがわかります。警告は、デバイスを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を使用できます

ネットワーク オブジェクトは、デバイスのセルラーおよび Wi-Fi 接続情報へのアクセスを提供します。

次の方法でテストできます。

 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 に答える