2010-01-30 2 views
5

Lorsque XMLHttpRequest obtient l'erreur 0, cela signifie qu'il n'y a pas de connexion et la plupart du temps vous voulez réessayer dans un certain temps.XMLHttpRequest error 0 bonne gestion (réessayer la demande)

Existe-t-il un moyen simple de réessayer de façon transparente le XMLHttpRequest en informant l'utilisateur que la connexion est perdue (exactement comme le fait gmail)?

(J'utilise jQuery)

+0

En dehors de mettre votre code de connexion dans sa propre fonction et appeler settimeout après avoir modifié une partie du DOM pour informer l'utilisateur que la connexion est en panne? (Je mettrais cela comme une réponse mais je sens que je manque quelque chose) –

+0

duplicata possible de [Comment puis-je renvoyer une requête ajax échoué?] (Http://stackoverflow.com/questions/8881614/how-do -i-resend-a-failed-ajax-request) – user2284570

Répondre

11

Regardez ici pour ce que vous êtes après: Defensive AJAX and AJAX retries in jQuery.

En gros, dans le gestionnaire d'erreurs, vous pouvez faire $.ajax(this);

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

L'article lié a un exemple plus en profondeur avec une limite de nouvelle tentative, etc ... comme avec la plupart jQuery, vous pouvez presque copier/Collez leur exemple pour y aller.