probleme location.reload() en ajax sous IE 7

probleme location.reload() en ajax sous IE 7 - Divers - Programmation

Marsh Posté le 15-05-2007 à 18:02:00    

Bonjour,
 
je développe dans le cadre de mon entreprise un applicatif d'emailing avec tracking etc ...
 
Dans le menu de gestion d'images je rencontre un petit soucis d'incompatibilité avec firefox et IE 7.
 
Je vous explique les fonctionnalités de cette page :
 
toute simple, fonction php qui fait un listing des images présentes dans le répertoire sur la droite un petit encadré ( fieldset avec pour nom Aperçu ),
 
Et à l'aide d'ajax lorsque je passe la souris sur les noms d'images, une fonction php miniaturise l'image et un petit aperçu apparaît dans l'encadré. Jusque la tout va bien ( que ce soit sous firefox ou IE).
 
Une autre fonctionnalité de cette page est la suppression d'images. En effet, pour supprimer j'ai également utiliser de l'ajax qui dès que l'on clique sur le nom d'une image supprime l'image du fichier puis fait un reload de la page pour faire disparaître le nom de l'image de la liste.
 
Le problème ( il en fallait bien un  :pfff: ), et que sous firefox tout cela se passe bien par contre sous IE 7, c'est la cata. La page ne s'actualise pas  :cry:  
 
Voici ma fonction :

Code :
  1. function Suppression(img) {
  2. if (window.XMLHttpRequest) { // Mozilla, Safari, ...
  3.     XmlReq = new XMLHttpRequest();
  4. }
  5. else if (window.ActiveXObject) { // IE
  6.     XmlReq = new ActiveXObject("Microsoft.XMLHTTP" );
  7. }
  8. else {
  9. alert('Ca marche pas');
  10. }
  11. XmlReq.onreadystatechange=  function () {
  12. if (XmlReq.readyState == 4) {
  13.             if (XmlReq.status == 200) {
  14.    document.location.reload();
  15.             }
  16.      else {
  17.                 alert(XmlReq.status+" : "+XmlReq.statusText);
  18.             }
  19.   }
  20. };
  21. var donnees= "img="+img;
  22. XmlReq.open('POST','suppression_img.php',true);
  23. XmlReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded" ); 
  24. XmlReq.send(donnees);
  25. }


 
Pour essayer de repérer le disfonctionnement, j'ai positionné 2 alerts :
 

Code :
  1. function Suppression(img) {
  2. if (window.XMLHttpRequest) { // Mozilla, Safari, ...
  3.     XmlReq = new XMLHttpRequest();
  4. }
  5. else if (window.ActiveXObject) { // IE
  6.     XmlReq = new ActiveXObject("Microsoft.XMLHTTP" );
  7. }
  8. else {
  9. alert('Ca marche pas');
  10. }
  11. XmlReq.onreadystatechange=  function () {
  12. alert(XmlReq.readyState);
  13. if (XmlReq.readyState == 4) {
  14.    alert(XmlReq.status);
  15.             if (XmlReq.status == 200) {
  16.    document.location.reload();
  17.             }
  18.      else {
  19.                 alert(XmlReq.status+" : "+XmlReq.statusText);
  20.             }
  21.   }
  22. };
  23. var donnees= "img="+img;
  24. XmlReq.open('POST','suppression_img.php',true);
  25. XmlReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded" ); 
  26. XmlReq.send(donnees);
  27. }


 
Voila ce que me fait IE !

Code :
  1. 1
  2. 1
  3. 1
  4. 4
  5. 200
  6. 4  (ici il devrait être dans le if)
  7. 200
  8. 4
  9. 200


puis actualisation de la page  :??: !!!
 
1ère remarque: la page s'actualise tout de même quand je mets les alerts.
2ème remarque: pourquoi alors que Xmlreq.status = 200 il ne rentre pas dans le if.
 
Voila j'espère avoir été assez clair :)
 
Je vous remercie d'avance pour vos réponses qui j'espère m'aideront héhé :)
 
Amicalement,
 
Julien


Message édité par kakahn le 15-05-2007 à 20:41:03
Reply

Marsh Posté le 15-05-2007 à 18:02:00   

Reply

Marsh Posté le 16-05-2007 à 12:23:18    

Déplace dans HTML/CSS/Javascript, t'auras plus de chance d'obtenir des réponses.
 
Mais déjà qu'est ce qui te dis qu'il ne rentre pas dans le "if"? Ca n'est pas par ce qu'il y rentre une premiére fois qu'il n'aura pas le temps d'y rerentrer avant que le serveur lui renvoye le fichier ou qu'il relise le fichier qu'il a en cache. D'ailleurs vu que tu dis que le rafraichissement à bien lieux, c'est qu'il doit y passer dans ton "if". Sinon la page ne serait pas rafraichis.
 
En fait si tu veux savoir si IE passe ou non dans le "if", il n'y a que deux solutions fiables : mettre un "alert" dans le "if" ou débugguer le script en pas à pas.

Reply

Sujets relatifs:

Leave a Replay

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