AJAX : problème de compatibilité IE / Firefox

AJAX : problème de compatibilité IE / Firefox - HTML/CSS - Programmation

Marsh Posté le 22-08-2009 à 02:17:13    

Bonjour,
J'ai un code qui fonctionne sous IE. Mais je n'arrive décidément pas à le faire fonctionner sous FireFox. Qqun pourrait-il m'aider svp ??? J'ai regardé les post précédents sur differents forums (le sujet est souvent traité) mais je n'arrive pas à trouver pour autant le problème chez moi.... Voici mon code:
 
<script language="text/JavaScript">  
var xhr_object = null;
 
function SendGetRequest(type) {
     
 if (window.XMLHttpRequest)
 { // Pour Firefox
  xhr_object = new XMLHttpRequest();    
 } else if (window.ActiveXObject)
 { // Pour IE
  xhr_object = new ActiveXObject('Microsoft.XMLHTTP');    
 } else
 { // Navigateur non-compatible
  alert('Ton navigateur ne supporte pas les objets XMLHTTPRequest...');    
  return;
 }
 
 xhr_object.open('POST','authentification.php',false);
 xhr_object.setRequestHeader("Content-type","application/x-www-form-urlencoded" );  
 xhr_object.onreadystatechange = CallBackRequest1;
 data="username=test&password=test";
        xhr_object.send(data);
 
}
 
function CallBackRequest1() // Traite la reponse du traitement dans le fichier PHP
{  
 if ( xhr_object.readyState == 4)  
 {  
          retour=xhr_object.responseText.split(":" );
          alert(retour[1]);
   if (retour[1]=="You are logged on" )
   {
  alert("Be careful !!!! Don't use the arrows of your browser to go to the preview or next page !" );
  document.getElementById('entree').style.height="85%";
                document.getElementById('login').innerHTML = "Bonjour, "+retour[0]+" !";
          }  
 }
}  
</script>
 
....
 
<input type=button value=OK onclick="SendGetRequest(1);">
 
 
 
MERCI bien !!!!!

Reply

Marsh Posté le 22-08-2009 à 02:17:13   

Reply

Marsh Posté le 22-08-2009 à 21:23:46    


Ton problème est certainement cette ligne : en utilisant le mode synchrone, le callback onreadystatechange ne devrait normallement pas être appelé.  

Code :
  1. xhr_object.open('POST','authentification.php',false);


 
Bref, utilise un mode asynchrone, comme ce qui est fait pratiquement partout ailleur.

Reply

Marsh Posté le 04-09-2009 à 01:16:11    

Avez vous trouvé votre réponse ?
J'ai le même problème (Ajax fonctionne sous IE et pas sous Firefox ni chrome) donc ça m'intéresse.
 
Voici mon code javascript qui lance la requete Ajax :
 

Code :
  1. function submitForm()
  2. {
  3.   var req = null;
  4.   if (window.XMLHttpRequest)
  5.   {
  6.     req = new XMLHttpRequest();
  7.     alert('1');
  8.   }
  9.   else if (window.ActiveXObject)
  10.   {
  11.     alert('2');
  12.     try {
  13.          req = new ActiveXObject("Msxml2.XMLHTTP" );
  14.     } catch (e) {
  15.       try {
  16.       req = new ActiveXObject("Microsoft.XMLHTTP" );
  17.       } catch (e) {}
  18.     }
  19.   }
  20.   req.onreadystatechange = function() {
  21.     document.ajax.dyn.value="Wait server...";
  22.     alert("OK"+req.readyState+ " " +req.status)
  23.     if(req.readyState == 4)
  24.     {
  25.       if ((req.status == 200))
  26.       {
  27.        document.getElementById("astro" ).innerHTML =  req.responseText;
  28.       }
  29.       else
  30.       {
  31.        document.getElementById("astro" ).innerHTML =  "OUPS!!";
  32.       }
  33.     }
  34.   };
  35.   req.open("POST", "test.php", true);
  36.   req.send(null);
  37. }


Mon code de test.php est assez basic (pas de php dedans pour l'instant):

Code :
  1. <div id="res">
  2.   <br />
  3.   <br />
  4.   <h1>Coucou</h1>
  5.   </div>


 
Sur IE j'ai req.readyState=4, req.status=200 et req.responseText contient bien ce que je veux.
Sur Chrome j'ai req.readyState=4, req.status=0 et req.responseText contient bien ce que je veux.
Sur Firefox j'ai rien, je ne passe pas dans la réponse !
 
Avec un GET au lieu de POST même résultat... Je désespère!

Reply

Marsh Posté le 04-09-2009 à 09:00:34    

Il fallait lire :
 
Sur Chrome j'ai req.readyState=4, req.status=0 et req.responseText NE CONTIENT PAS ce que je veux.


Message édité par nrenaud16 le 04-09-2009 à 09:01:08
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed