2010-01-30 794 views
5

Cuando XMLHttpRequest obtiene el error 0 significa que no hay conexión y la mayoría de las veces solo desea volver a intentarlo en algún momento.XMLHttpRequest error 0 gestión correcta (vuelva a intentar la solicitud)

¿Existe una manera simple de volver a intentar de forma transparente XMLHttpRequest notificando al usuario que la conexión se ha perdido (al igual que lo hace gmail)?

(estoy usando jQuery)

+0

¿Fuera de poner su código de conexión en su propia función y llamar a settimeout después de cambiar alguna parte del DOM para que el usuario sepa que la conexión está inactiva? (Pondría esto como una respuesta, pero siento que me falta algo) –

+0

posible duplicado de [¿Cómo reenvío una solicitud ajax fallida?] (Http://stackoverflow.com/questions/8881614/how-do -i-resend-a-failed-ajax-request) – user2284570

Respuesta

11

Mire aquí para lo que está buscando: Defensive AJAX and AJAX retries in jQuery.

Básicamente en el manejo de errores, puede hacer $.ajax(this);

$.ajax({ 
    url : 'timeOutPage.html', 
    type : 'get', 
    timeout : 20000, 
    error : function(xhr, textStatus, errorThrown) { 
    if (textStatus == 'timeout') { 
     $.ajax(this); 
     return; 
    } 
    } 
}); 

El artículo enlazado tiene un ejemplo más en profundidad con un límite de reintentos, etc ... como con la mayoría de jQuery, casi se puede copiar/pegue su ejemplo para ponerse en marcha.

Cuestiones relacionadas