Tengo un código Javascript JQuery que hace una llamada Ajax al servidor cada 5 minutos, es para mantener la sesión del servidor activa y mantener al usuario conectado. ' m usando el método $.ajax()
en JQuery. Esta función parece tener una propiedad de 'error' que estoy tratando de usar en el caso de que la conexión a Internet del usuario se apague para que la secuencia de comandos KeepAlive continúe ejecutándose. Estoy usando el siguiente código:JQuery Ajax - Cómo detectar un error de conexión de red al hacer una llamada 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);
}
});
}
Cuando lo ejecuto, voy a conseguir emergente 'éxito' en la pantalla en un cuadro de alerta cada 10 segundos, lo cual está muy bien. Sin embargo, tan pronto como desconecto el cable de red, no obtengo nada, esperaba que se llamara a la función de error y vea un cuadro de alerta de 'Falla', pero no pasa nada.
¿Estoy en lo correcto al asumir que la función 'error' es solo para códigos de estado que no son '200' devueltos del servidor? ¿Hay alguna forma de detectar problemas de conexión de red al hacer una llamada Ajax?
¿Se desconecta el cable de red del cliente o el cable de red del servidor? –
¿Continúa recibiendo la alerta de "éxito" después de desconectar su conexión? – Wilkins
@Jeff: es la pérdida de conexión a Internet en el extremo del cliente la causa del problema. Increíblemente, esto está sucediendo en realidad, ya que algunos clientes usan la aplicación con una conexión inalámbrica dudosa que sigue desapareciendo. Hay un dicho que dice "Nunca subestimes la capacidad de los usuarios finales para encontrar formas de romper tu aplicación", definitivamente suena cierto aquí :-) –