2008-12-18 5 views
3

Comment gérer le scénario où je fais une requête synchrone au serveur en utilisant XMLHttpRequest et le serveur n'est pas disponible?Problème: XMLHttpRequest - Gérer la connexion au serveur perdue

xmlhttp.open("POST","Page.aspx",false); 
xmlhttp.send(null); 

En ce moment, ce scénario résulte en une erreur JavaScript: « Le système ne peut pas localiser la ressource spécifiée »

+0

http://geekswithblogs.net/lorint/archive/2006/03/07/71625.aspx Heres un tutoriel pour le faire pour une seule requête. –

Répondre

1

Ok je résolus en utilisant try ... catch autour xmlhttprequest.send

:

xmlhttp.open("POST","Page.aspx",false);    
     try 
     { 
     xmlhttp.send(null); 
     } 
     catch(e) 
     { 
      alert('there was a problem communicating with the server'); 
     }  
2

Essayez la propriété de délai d'attente.

xmlHTTP.TimeOut= 2000 
+0

Je pense que cela ne fonctionnera que pour les requêtes asynchrones, dans le cas de requêtes synchrones. xmllhttprequest.send va bloquer. Nous devrons utiliser try..catch comme indiqué ci-dessous: – Ngm

1

Vous ne vérifie pas le statut correctement retourné. Par le code que vous avez donné, vous faites une demande GET. Pour vérifier correctement l'état de votre requête, vous devez créer un gestionnaire d'événements pour l'événement onreadystatechange, puis vérifier si la propriété readyState est égale à 4 puis à l'intérieur de la méthode si le statut est 200. une explication détaillée ici: Ajax Tutorial by Mozilla


xmlhttp.onreadystatechange=function() 

xmlhttp.open("GET","Page.aspx",false); 
{ 
    if (xmlhttp.readyState==4) 
    { 
    if (xmlhttp.status==200) 
    { 
     //Ajax handling logic 
    } 
    } 
} 
xmlhttp.send(null); 



Questions connexes