[AJAX] Deroulement de script XMLHttpRequest différent sous IE et FF
	
	
		Bonjour,
Je suis nouveau, donc toutes mes excuses si je ne suis pas assez clair ...
Nota : je ne sais pas si mon problème releve seulement de JS ou d' AJAX
Mon souci :
J'ai fait une page qui fait appel à un script JS. Ce script JS utilise classiquement XMLHttpRequest pour obtenir une info du serveur (en POST et en asynchrone).
Mais : le comportement de mon ensemble n'est pas le même sous IE et FF (anormal sous FF !) :
Sous FF, la fonction semble ne vouloir finir qu'une fois le script principal terminé
Sous IE, c'est un peu le contraire, il se fait les 4 appels déclenchés par l'état avant de sortir de ma fonction de maj_messages.
Quelqu'un a-t-il une explication et surtout une solution (pour ma page complète, ça a une importance)
Pour être plus clair sur le forum, j'ai tout simplifié au maximum
NOTA pour ne pas être surpris : sous FF il faut "tuer" FF pour en sortir car on se retrouve bloqué dans la boucle finale
Le fichier de base : page.html
	Code:
	
| 12
 
 | <html><head><script src="./test.js" type="text/javascript"></script></head>
<body><div><p>Texte d'exemple</p></div></body></html> | 
 Le script JS : test.js
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 
 | var $xhr_fini;
function maj_messages() {
  xhr_object = null;
  if(window.XMLHttpRequest) // Firefox
    xhr_object = new XMLHttpRequest();
  else if(window.ActiveXObject) // Internet Explorer
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
  else { // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest ...");
    return;
  }
  $data = "information=aaa";
  xhr_object.open("POST","./test.php",true);
  xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhr_object.onreadystatechange = function anonymous() {
      alert('Le statut vient de changer : '+xhr_object.readyState); 
      if(xhr_object.readyState == 4) {
        alert('on est au bon statut : '+xhr_object.readyState); 
        var $reponse = xhr_object.responseText.split(":");
        var $informationautiliser = $reponse[0];
        if(typeof($informationautiliser) != "undefined") {
          alert("LA ON FAIT CE QUE JE VEUX FAIRE AVEC LE RETOUR DE MON PHP");
        }
        $xhr_fini = true;
      }
    }
  alert("Avant envoi des donnees");
  xhr_object.send($data);
  alert("Après envoi des donnees");
}
function demarrer() {
  $xhr_fini = false;
  maj_messages();
  while ($xhr_fini == false) {
    alert ("On est dans la boucle d'attente : "+$xhr_fini+" : "+xhr_object.readyState);
  }
  alert ("Fin de la fonction demarrer : "+$xhr_fini);
}
window.onload = demarrer; | 
 Le script php (sans interrêt) : test.php
	Code:
	
| 12
 3
 
 | <?php
  echo ">>>".$_POST['information'];
?> |