Problème ajax

Résolu
djodjo49 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
djodjo49 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   846
 
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   Statut Membre Dernière intervention  
 
D'accord mais pourquoi le 1 ne s'affiche pas?
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
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   Statut Membre Dernière intervention  
 
D'accord, merci pour la petite explication.
Bonne journée à vous.
0