2012-05-07 9 views
6

Devo avvisare l'utente con le seguenti condizioni;Come avvisare l'utente quando non c'è connessione Internet

  1. Richiesta scaduta
  2. Nessun collegamento a Internet
  3. Impossibile raggiungere il server

Ecco il codice; Come catturare le seguenti condizioni quando si è verificato e avvisare l'utente?

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

Ho provato il seguente codice per verificare se internet è raggiungibile, ma non ha funzionato

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

UPDATE **

ho aggiunto il seguente nel mio indice. html, ma, quando disabilito il WIFI, non vedo l'avviso popping.

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

Quale errore/avviso viene gettato sul log della console? –

+0

Non viene lanciato nulla. – user1315906

risposta

1

È possibile utilizzare PhoneGap's NETWORK API

L'oggetto di rete permette di accedere a informazioni cellulare e connessione wi-fi del dispositivo.

È possibile verificare che in questo modo,

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]); 
    } 
+0

Dove dovrei aggiungere le funzioni di cui sopra ('onDeviceReady', 'reachableCallback'). È in "app.js"? – user1315906

+0

È possibile includere direttamente 'navigator.network.isReachable (" phonegap.com ", reachableCallback, {});' linea dove si desidera testare la connessione di rete e aggiungere una funzione di callback. –

+2

Il metodo isReachable è stato ritirato dalle ultime versioni di PhoneGap. –

19

La cosa migliore da fare è quello di ascoltare il "offline" evento. Quando si arriva l'evento offline è possibile mettere in guardia l'utente e prendere tutte le misure necessarie per salvare i dati, ecc

Per esempio, il callback "deviceready":

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

Questo codice dovrebbe funzionare per la maggior parte tutte le versioni di PhoneGap. È stato in almeno la versione 1.0.

+1

+1 Risposta piacevole :) –

+0

Ho aggiornato la mia domanda. Per favore guarda. – user1315906

+1

Assicurati di avere le autorizzazioni INTERNET e READ_PHONE_STATE nel file manifest.xml. Inoltre, se hai recentemente aggiornato PhoneGap a 1.6 o 1.7 assicurati che i tuoi riferimenti a plugins.xml su "NetworkStatus" non siano "Network Status", il nome è stato cambiato per rimuovere lo spazio. –

3

Esattamente come ha detto Simon, è possibile utilizzare

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

oppure è possibile interrogare la proprietà booleana

navigator.onLine 

(deve restituire vero o falso)

Tuttavia, questa tecnica vi dirà se il dispositivo è collegato. L'avvertenza è tale che il dispositivo può essere collegato al WiFi, ma il router potrebbe essere offline. In tal caso, utilizzare un meccanismo di polling, ad esempio Ext.Ajax.request tempestivo con timeout inferiori. Timeout scaduto = offline.

1

È possibile aggiungere "Ext.device.Connection" in app.js dell'applicazione.E controllare il dispositivo è in linea o non in linea con il codice:

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

Proprio Incorpora questo nel tag

<body onoffline="alert('PLEASE CHECK YOUR INTERNET SETTING');"> 
Problemi correlati