Ho qualche codice JavaScript JQuery che fa una chiamata Ajax al server ogni 5 minuti, è per mantenere viva la sessione del server e mantenere l'utente connesso. m utilizzando il metodo $.ajax()
in JQuery. Questa funzione sembra avere una proprietà di 'errore' che sto cercando di utilizzare nel caso in cui la connessione internet dell'utente vada giù in modo che lo script KeepAlive continui a funzionare. Sto utilizzando il seguente codice:JQuery Ajax - Come rilevare l'errore di connessione di rete quando si effettua una chiamata Ajax
var keepAliveTimeout = 1000 * 10;
function keepSessionAlive()
{
$.ajax(
{
type: 'GET',
url: 'http://www.mywebapp.com/keepAlive',
success: function(data)
{
alert('Success');
setTimeout(function()
{
keepSessionAlive();
}, keepAliveTimeout);
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
alert('Failure');
setTimeout(function()
{
keepSessionAlive();
}, keepAliveTimeout);
}
});
}
quando l'eseguo, vado a prendere a comparsa 'successo' sullo schermo in una finestra di avviso ogni 10 secondi che va bene. Tuttavia, non appena ho scollegato il cavo di rete, non ottengo nulla, mi aspettavo che la funzione di errore venisse chiamata e vedessi una casella di avviso "Failure", ma non succede nulla.
Sono corretto nel presupporre che la funzione 'errore' è solo per i codici di stato non '200' restituiti dal server? C'è un modo per rilevare problemi di connessione di rete quando si effettua una chiamata Ajax?
Forse si scollega il cavo di rete del cliente o il cavo di rete del server? –
Continui a ricevere l'avviso di 'successo' dopo aver scollegato la connessione? – Wilkins
@Jeff - È la perdita di connessione Internet sul lato client che sta causando il problema. Inevitabilmente ciò accade in realtà poiché alcuni client utilizzano l'app con una connessione wireless dubbia che continua a cadere. C'è un detto "Non sottovalutare mai la capacità degli utenti finali di trovare modi per rompere la tua applicazione", suona sicuramente vero :-) –