Problème ajax

Résolu/Fermé
djodjo49 Messages postés 20 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 12 juin 2012 - 11 mai 2012 à 10:33
djodjo49 Messages postés 20 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 12 juin 2012 - 11 mai 2012 à 10:49
Bonjour à tous.

Je suis actuellement en train de développer un site et j'utilise une requête ajax qui me permet d'uploader une bdd grâce à un fichier XML.

Celle ci marche très bien, seulement j'aimerais faire un système d'affichage de l'état de chargement en temps réel du nombre de noeud du fichier XML qui ont déjà été traités.

Pour arriver à mes fins, je pensais lancer une fonction JS qui lancerait une autre requête ajax qui compte le nombre de références déjà inséré dans la bdd. (je vide la bdd à chaque début d'upload)

Je pensais lancer cette fonction lors d'un:
if (xhr_object_Refresh.readyState<4){ fonction();}

Seulement lorsque je fais un:

if (xhr_object_Refresh.readyState<4){
alert(xhr_object_Refresh.readyState);
}

Je n'ai que 2 et 3 qui s'affiche.

Si quelqu'un pouvait m'aider à régler ce problème, ou si quelqu'un a une autre solution pour le système d'affichage du chargement en temps réel.

Cordialement.


Le lancement de la requête ajax:

function upload(cmd,total){

if(window.XMLHttpRequest) // FIREFOX
xhr_object_Refresh = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object_Refresh = new ActiveXObject("Microsoft.XMLHTTP");
else
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");

xhr_object_Refresh.open("POST", "uploadancien.php5", true);
xhr_object_Refresh.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "upload=ok&cmd=maj";
//on envoie les données
xhr_object_Refresh.send(data);

xhr_object_Refresh.onreadystatechange = function()
{
if (xhr_object_Refresh.readyState<4){
alert(xhr_object_Refresh.readyState);
//fonction();
}

if(xhr_object_Refresh.readyState == 4)
{
//.......
}
}
}

1 réponse

Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
11 mai 2012 à 10:37
Hello,

Normal que tu n'aies que 2 et 3 : l'état de la requête Ajax ne prends des valeurs que de 1 à 4 (terminée) ; donc comme tu mets un inférieur strict, tu n'affiches que 2 et 3.
0
djodjo49 Messages postés 20 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 12 juin 2012
11 mai 2012 à 10:44
D'accord mais pourquoi le 1 ne s'affiche pas?
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
11 mai 2012 à 10:48
Parce que les états 0 (que j'avais oublié) et 1 sont implicites, créés avant le "send" de la requête et donc non retournés.
0
djodjo49 Messages postés 20 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 12 juin 2012
11 mai 2012 à 10:49
D'accord, merci pour la petite explication.
Bonne journée à vous.
0