Erreur AJAX/JS

Erreur AJAX/JS - HTML/CSS - Programmation

Marsh Posté le 24-02-2014 à 18:58:16    

Bonjour,
 
j'utilise souvent cette fonction AJAX pour ajouter le contenu d'une page dynamique dans un DIV :
 

Code :
  1. function modifier(url,id)
  2. {
  3. var xhr_object = null;
  4. var position = id;
  5. if(window.XMLHttpRequest) {
  6. xhr_object = new XMLHttpRequest();
  7. }
  8. else if (window.ActiveXObject)
  9. {
  10. xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  11. }
  12. xhr_object.open("GET", url, true);
  13. xhr_object.onreadystatechange = function(){
  14. if ( xhr_object.readyState == 4 )
  15. {
  16. document.getElementById(position).innerHTML = xhr_object.responseText;
  17. }
  18. }
  19. xhr_object.send(null);
  20. }


 
or, lors d'une énième utilisation sur un nouveau site, sous IE uniquement, je tombe sur un bug avec le message "Erreur d'exécution inconnue" et la section du DIV reste vide de tout nouveau contenu.
 
C'est curieux car le contenu a l'air de parvenir au moins jusqu'à l'objet, on le voit grâce à ce code joint qui affiche bien le contenu HTML concerné dans une popup :
 

Code :
  1. alert(xhr_object.responseText);
  2. // positionné avant document.getElementById(position).innerHTML = xhr_object.responseText;


 
De même que ce code affiche bien du code HTML sous IE :
 
document.getElementById(position).innerHTML = "<strong>message test en gras</strong>";
 
Donc de quoi cela pourrait-il venir ?
 
Merci

Reply

Marsh Posté le 24-02-2014 à 18:58:16   

Reply

Marsh Posté le 25-02-2014 à 16:48:47    

Deux choses :
 
1. Si c'est une ancienne version de IE, alors il manque :
 
xhr_object = new ActiveXObject("Msxml2.XMLHTTP" );
 
On peut la mettre  grâce à des try :

   try{xhr_object = new XMLHttpRequest();}
   catch(e) {
      try{xhr_object = new ActiveXObject("Msxml2.XMLHTTP" );}
      catch(e) {
         try{xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );}
         catch(e) {
            alert("Your browser does not support AJAX!" );
            return false;
         }
      }
   }


 
2. La ligne du send devrait être placée avant la ligne du onreadystatechange , comme ceci :

xhr_object.open("GET", url, true);
xhr_object.send(null);
xhr_object.onreadystatechange = function() {
   if (xhr_object.readyState == 4) {
      document.getElementById(position).innerHTML = xhr_object.responseText;
   }
}

Reply

Marsh Posté le 25-02-2014 à 18:34:23    

Bonjour,
 
Merci Olivthill pour tes indications, mais :
1. C'est la version 8 d'IE, donc ça me semble assez récent.
2. J'ai déplacé la ligne, mais ça ne donne rien, même résultat positif sous FF, même résultat négatif sous IE.
 
Le code utilisé initialement marchait bien pour d'autres sites fait-maison quel que soit le navigateur. Dans le cas présent, est-ce que le problème pourrait être dû à un conflit lié à Wordpress ou à un plugin ?

Reply

Sujets relatifs:

Leave a Replay

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