Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
842 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  xhr.responsetext ne marche pas sous ie

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

xhr.responsetext ne marche pas sous ie

n°1700644
scmilblick
Posté le 11-03-2008 à 19:40:00  profilanswer
 

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

mood
Publicité
Posté le 11-03-2008 à 19:40:00  profilanswer
 

n°1701025
scmilblick
Posté le 12-03-2008 à 13:37:12  profilanswer
 

personne n'a une idée ?

n°1701047
dwogsi
Défaillance cérébrale...
Posté le 12-03-2008 à 14:03:22  profilanswer
 

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})/
n°1701126
Demo Mana
Posté le 12-03-2008 à 15:13:25  profilanswer
 

...

Message cité 1 fois
Message édité par Demo Mana le 28-04-2008 à 18:27:47
n°1701147
dwogsi
Défaillance cérébrale...
Posté le 12-03-2008 à 15:29:13  profilanswer
 

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})/
n°1701306
scmilblick
Posté le 12-03-2008 à 17:56:28  profilanswer
 

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

n°1701308
dwogsi
Défaillance cérébrale...
Posté le 12-03-2008 à 18:01:09  profilanswer
 

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})/
n°1701316
scmilblick
Posté le 12-03-2008 à 18:08:31  profilanswer
 

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

n°1701320
dwogsi
Défaillance cérébrale...
Posté le 12-03-2008 à 18:20:01  profilanswer
 

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})/
n°1704241
scmilblick
Posté le 18-03-2008 à 18:44:47  profilanswer
 

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
mood
Publicité
Posté le 18-03-2008 à 18:44:47  profilanswer
 

n°1727737
akalaan
Posté le 02-05-2008 à 17:22:27  profilanswer
 

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,

n°1728387
akalaan
Posté le 05-05-2008 à 09:42:13  profilanswer
 

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
n°1728414
dwogsi
Défaillance cérébrale...
Posté le 05-05-2008 à 10:17:23  profilanswer
 

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})/
n°1728430
akalaan
Posté le 05-05-2008 à 10:31:44  profilanswer
 

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
n°1728633
akalaan
Posté le 05-05-2008 à 14:36:59  profilanswer
 

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 ?

n°1728682
akalaan
Posté le 05-05-2008 à 16:52:08  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  xhr.responsetext ne marche pas sous ie

 

Sujets relatifs
[PHP] Imagecreatefromjpeg() marche pas completementinclude ne marche pas
Ma vérif de form ne marche plus du jour au lendemain !onLoad ne fonctionne que dans l'éditeur flash!?
[réglé] mon bbcode ne marche pas"cin" marche pas !
JVM comment ça marche en fait...XMLHttpRequest qui marche en local, mais pas en ligne...
[VB.NET 05] - Appli console marche sous XP, pas sous Vista ?[Résolu][StringTokenizer - Urgent] Comment ça marche ?
Plus de sujets relatifs à : xhr.responsetext ne marche pas sous ie


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR