xhr.responsetext ne marche pas sous ie

xhr.responsetext ne marche pas sous ie - HTML/CSS - Programmation

Marsh Posté le 11-03-2008 à 19:40:00    

Bonjour à tous !!
 
j'ai un pb avec un xhr.responsetext sous IE.  
 
Je charge mon contenu de page dans une div. mais il n'arrive pas à se charger dans IE
 

Code :
  1. function envoieRequete(url,id)
  2. {
  3. var xhr_object = null;
  4. var position = id;
  5.     if (window.XMLHttpRequest)
  6.  {
  7.  alert("vous etes en firox" );
  8.   //Firefox ou IE >= 7.0
  9.   xhr_object = new XMLHttpRequest();
  10.  }
  11.  else if (window.ActiveXObject)
  12.  {
  13.  alert("vous etes en windows" );
  14.  try
  15.  { // essaie de charger l'objet pour IE
  16.   xhr_object = new ActiveXObject("Msxml2.XMLHTTP" );
  17.   window.alert(xhr_object);
  18.  }
  19.  catch (e)
  20.  {
  21.   try
  22.   { // essaie de charger l'objet pour une autre version IE
  23.    xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  24.   }
  25.   catch (e)
  26.   {
  27.    window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest." );
  28.   }
  29.  }
  30.  }
  31. // On ouvre la requete vers la page désirée
  32. xhr_object.open("GET", url, true);
  33. xhr_object.onreadystatechange = function()
  34.          { alert(xhr_object.readyState);
  35.          // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
  36.   if (document.getElementById(position) && xhr_object)
  37.   {
  38.    if (xhr_object.readyState == 4)
  39.       {
  40.     if (xhr_object.status == 200 || xhr_object.status == 304)
  41.     {
  42.     document.getElementById(position).innerHTML = xhr_object.responseText;
  43.     } 
  44.     else
  45.     {
  46.      document.getElementById(position).innerHTML = 'Error ' + xhr_object.status + ' : ' + xhr_object.statusText;
  47.     }
  48.       }
  49.      else
  50.       {
  51.    document.getElementById(position).innerHTML = 'Chargement en cours... veuillez patienter... .. .';
  52.    }
  53.   }
  54.        }
  55. // dans le cas du get
  56. xhr_object.send(null);
  57. }


 
j'ai également fait un test avec un alert sur le readystat et les 4 étapes s'affichent bien (IE et FF)
Mais sous IE j'ai continuellement "chargement en cours"
 
petite notif : je teste sous IE 7

Reply

Marsh Posté le 11-03-2008 à 19:40:00   

Reply

Marsh Posté le 12-03-2008 à 13:37:12    

personne n'a une idée ?

Reply

Marsh Posté le 12-03-2008 à 14:03:22    

Code :
  1. document.getElementById('position')


peut être, parce qu'il me semble que le paramètre donné est de type string.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 12-03-2008 à 15:13:25    

...

Message cité 1 fois
Message édité par Demo Mana le 28-04-2008 à 18:27:47
Reply

Marsh Posté le 12-03-2008 à 15:29:13    

Demo Mana a écrit :

La fonction demande un "id", c'est du DOM.


Ouai et un ID peut très bien être une string...

 

Je regarde vite fait avec mon amis Google, je trouve :
http://www.toutjavascript.com/refe [...] hp?iref=14
(sans dire que c'est un référence) on peut y lire Object document.getElementById(String id)
Donc en principe à placer entre simple ou double quote puisque c'est une chaîne.


Message édité par dwogsi le 12-03-2008 à 15:29:51

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 12-03-2008 à 17:56:28    

Oui mais mon appel dans la div est bien sous forme de String :  
<a ... onclick="envoieRequete('page_asp.aspx','maDiv1');>

Reply

Marsh Posté le 12-03-2008 à 18:01:09    

Pourrait-on voir un exemple en ligne par hasard?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 12-03-2008 à 18:08:31    

malheureusement non. Il s'agit d'un intranet professionnel.  
Je vais essayer de mettre en place une version allégée

Reply

Marsh Posté le 12-03-2008 à 18:20:01    

Ah oui mais au temps pour moi, tu passe bien une chaîne, j'avais pas bien suivit le code depuis le début.
 
Donc dans ce cas je me demande comment est traité position quand tu reçois une réponse...
 
Bon en fait une version en ligne serait surtout bien pratique pour vérifier quelques truc, mais pas indispensable.
 
Au fait, IE te lance pas des erreurs? cf icon alert en bas de fenêtre par exemple.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 18-03-2008 à 18:44:47    

oui,  
et comme d'hab toujours aussi clair :  
"Objet Attendu - ligne 436"
 
 
DOnc je vais voir ligne 436 et ça donne ça :
 
for (var i = 1; i<=10; i++) {
  if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
 }
 
je reste circonspect :)  :D


Message édité par scmilblick le 18-03-2008 à 18:46:14
Reply

Marsh Posté le 18-03-2008 à 18:44:47   

Reply

Marsh Posté le 02-05-2008 à 17:22:27    

Bonjour à tous, je relance ce post car j'ai aussi ce prb et souhaiterais savoir si des solutions ou des pistes ont été trouvées.
 
Voici mon cas :
Au clic sur un bouton je charge une page dans une div,
 
Voici le code html/php (tout bête)

Code :
  1. <a href="#" onclick="swapImage('visuAlarm.php','zoneAffich','images/menu/metiers/BoutonOverAlarme.gif','alarme');" onmouseover="swapImage('','','images/menu/metiers/BoutonOverAlarme.gif','alarme');" onmouseout="swapImage('','','images/menu/metiers/BoutonAlarme.gif','alarme');" ><img src="images/menu/metiers/BoutonAlarme.gif" border="0"  id="alarme" alt='Images introuvable' /></a>


 
Voici le code js
 

Code :
  1. function envoieRequete(url,id){
  2. var xhr_object = null;
  3. var position = id;
  4. if(window.XMLHttpRequest) // Firefox  
  5.    xhr_object = new XMLHttpRequest();
  6. else if(window.ActiveXObject) // Internet Explorer  
  7.    xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  8. else { // XMLHttpRequest non supporté par le navigateur  
  9.    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  10.    
  11. }
  12. xhr_object.open("GET", url, false);
  13.  xhr_object.send(null);
  14. if ( xhr_object.readyState == 4 ){
  15.    document.getElementById(position).innerHTML = xhr_object.responseText;
  16.   }
  17. }
  18. var clic=false;
  19. var etat=0;
  20. function swapImage(urlFile,posFile,urlImg,posImg)
  21. {
  22. var url = urlFile;
  23. var id = posFile;
  24.    
  25. if((url!="" )&&(id!="" ))
  26. {
  27.     document.getElementById(posImg).src=urlImg;
  28.     envoieRequete(url,id);
  29. }else{
  30.  document.getElementById(posImg).src=urlImg;
  31. }
  32. }


 
Donc sous FF ok mais IE "Impossible d'effectuer l'opération suivante à cause de l'erreur suivante c00ce56e"
 
Mais pour une de mes rubrique qui est un blog Dotclear cela fontionne même pour IE.
 
Je ne comprend pas du tout ce qui ce passe
 
Si vous aviez des idées, je suis preneur.
 
Merci d'avance,
 
Cordialement et bon weekend,

Reply

Marsh Posté le 05-05-2008 à 09:42:13    

Re bonjour,
 
Je voulais préciser que l'erreur ce situe ici :
 

Code :
  1. function envoieRequete(url,id){
  2. var xhr_object = null;
  3. var position = id;
  4. if(window.XMLHttpRequest) // Firefox   
  5.     xhr_object = new XMLHttpRequest();
  6. else if(window.ActiveXObject) // Internet Explorer   
  7.     xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  8. else { // XMLHttpRequest non supporté par le navigateur   
  9.     alert("Votre navigateur ne supporte pas les objets MLHTTPRequest..." );
  10.    
  11. }
  12. xhr_object.open("GET", url, false);
  13.   xhr_object.send(null);
  14. if ( xhr_object.readyState == 4 ){
  15.    => document.getElementById(position).innerHTML = xhr_object.responseText;
  16.    }
  17. }


Message édité par akalaan le 05-05-2008 à 09:44:18
Reply

Marsh Posté le 05-05-2008 à 10:17:23    

Code :
  1. ...
  2. xhr_object.open("GET", url, false);
  3. xhr_object.onreadystatechange = function()
  4. {
  5.   if ( xhr_object.readyState == 4 ){
  6.      document.getElementById(position).innerHTML = xhr_object.responseText;
  7.   }
  8. }
  9. xhr_object.send(null);
  10. ...


Non?


Message édité par dwogsi le 05-05-2008 à 10:18:40

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 05-05-2008 à 10:31:44    

J'ai fait la modif mais cela ne change rien
 
Voici le code modifié :
 

Code :
  1. function envoieRequete(url,id){
  2. var xhr_object = null;
  3. var position = id;
  4. if(window.XMLHttpRequest) // Firefox  
  5.    xhr_object = new XMLHttpRequest();
  6. else if(window.ActiveXObject) // Internet Explorer  
  7.    xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  8. else { // XMLHttpRequest non supporté par le navigateur  
  9.    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  10.    
  11. }
  12. xhr_object.open("GET", url, false);
  13. xhr_object.onreadystatechange = function()
  14. {
  15.  if(xhr_object.readyState == 4 ){
  16.    // j'affiche dans la DIV spécifiées le contenu retourné par le fichier
  17.    document.getElementById(position).innerHTML = xhr_object.responseText;
  18.  }
  19. }
  20. xhr_object.send(null);
  21. }


Message édité par akalaan le 05-05-2008 à 10:33:30
Reply

Marsh Posté le 05-05-2008 à 14:36:59    

Je viens de faire le test avec un srv linux sur lequel le code ne fonctionne pas pour IE, et un srv Windows avec WampServer sur lequel ça marche même avec IE
 
Des idées ?

Reply

Marsh Posté le 05-05-2008 à 16:52:08    

Re,
 
Bon et bien je viens de trouver le prb.
 
C'est l'envoi du charset.
 
Comme je l'ai dit plus haut, cela fonctionnait avec Server Apache Windows sous FF et IE mais pas avec Server Apache Linux sous IE.
 
La raison est le charset.
 
J'avais mis AddDefaultCharset utf8 dans apache2.conf sous linux, et une fois enlever, ça marche.
 
Merci pour vos réponse.

Reply

Sujets relatifs:

Leave a Replay

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