Comment gérer XHR erreur d'affichage des messages?
Je suis en train de chercher un peu de contenu à partir d'une autre source à l'aide XHR comme indiqué ci-dessous:
function fetchPage(str)
{
if(str=="")
{
document.getElementById("table").innerHTML="";
resetFilters();
$('#progress').hide(); //fetching progress bar <div>
return;
}
if (window.XMLHttpRequest) //code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
else //code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=postCallback;
xmlhttp.open("GET", "fetch.php?url=http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php?fb="+str, true);
xmlhttp.send();
//any stuff that goes here will happen before callback
// (this is a good place to update a UI element showing a call is resolving.)
// (for example a spinner or text saying "fetching")
$('#progress').show();
progressFetching();
switch(xmlhttp.readyState){ //loading bar adjustments
case 0:
$('.bar').css("width","0%");
$('.bar').text("0%");
break;
case 1:
$('.bar').css("width","25%");
$('.bar').text("25%");
break;
case 2:
$('.bar').css("width","50%");
$('.bar').text("50%");
break;
case 3:
$('.bar').css("width","75%");
$('.bar').text("75%");
break;
}
}
function postCallback()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200){
progressDone(); //loading is finished
$('#error').hide();
document.getElementById("table").innerHTML=xmlhttp.responseText;
//continue to process post callback.
resetFilters();
}
else {
//report error with fetch
/*if(xmlhttp.status==404 || xmlhttp.responseText == "")
$('#error').show();*/
//$('#error').show();
}
}
Je veux que ma page d'erreur s'affiche lorsque le délai d'attente de connexion se produit, ou lorsque l'ordinateur ne dispose pas d'une connexion internet (peut-être une erreur s'est produite lors de la pendaison autour) ou de toute autre situation où la page web ne parvient pas à extraire le contenu de l'autre source.
À l'aide du code ci-dessus, dans le else
bloc, si je pars pour if(xmlhttp.status==404 || xmlhttp.responseText == "")
dans le /* */
section des commentaires, je ne rentrerai pas une erreur, sauf si ce n'est pas une erreur 404. Si je pars pour //
section commentaire, erreur sera affiché après la récupération au démarrage du processus jusqu'à son terme, c'est à dire entre xmlhttp.readyState = 0
par xmlhttp.readyState = 4
. Comment puis-je afficher des messages d'erreur de connexion à l'aide de ces attributs ou autre chose?
Merci de votre attention:)
Je pense que vous êtes à l'aide de jQuery, si c'est ce cas de départ: api.jquery.com/jQuery.ajax et de prendre un coup d'oeil à la "erreur" paramètre (ne pas reprogrammer ce que vous avez déjà)
Je suis nouveau à cela, je vous remercie pour vos suggestions:)
OriginalL'auteur Varaquilex | 2013-02-05
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est mon modèle en avant la question a été entaché d'irrégularités. Je crois que ça va mieux fonctionner, car elle crée une fermeture à passer la variable que vous avez à travailler avec.
Une fois de plus, je n'ai pas tester ce donc, il pourrait avoir des fautes de frappe et des bugs -- je n'ai rien changer, sauf la façon
postCallback()
est invoquée et ajout d'un paramètre.if (xmlhttp.readyState==4){ if(xmlhttp.status==200 && xmlhttp.responseText != ""){
etelse { $('#progress').hide(); $('#error').show(); }
Tout semble fonctionner comme je l'ai désiré. Est-il bon de programmation? Merci:)OriginalL'auteur Hogan
Selon cette stackoverflow: XMLHttpRequest (Ajax) Erreur
OriginalL'auteur Kolby