Mam kod JavaScript JQuery, który wykonuje wywołanie Ajax do serwera co 5 minut, ma to na celu utrzymanie sesji serwera i zalogowanie użytkownika. Używam $.ajax()
metody w JQuery. Wydaje się, że ta funkcja ma właściwość „błąd”, której próbuję użyć w przypadku awarii połączenia internetowego użytkownika, aby skrypt KeepAlive nadal działał. Używam następującego kodu:
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);
}
});
}
Kiedy go uruchomię, co 10 sekund będzie pojawiać się wyskakujące okienko „Sukces” w oknie z ostrzeżeniem. Jednak jak tylko odłączę kabel sieciowy, nic się nie dzieje, spodziewałem się wywołania funkcji błędu i wyświetlenie komunikatu „Awaria”, ale nic się nie dzieje.
Czy mam rację zakładając, że funkcja „błąd” dotyczy tylko kodów statusu innych niż „200” zwracanych z serwera? Czy istnieje sposób na wykrycie problemów z połączeniem sieciowym podczas wykonywania połączenia Ajax?