Page 1 sur 2

[AJAX] Ne fonctionne pas sous IE

Posté : 10 févr. 2010, 18:00
par Yopopipo
Salut à tous.
Le script que j'essaye de mettre en place sert à un jeu concours.
Le joueur choisi un lot et ensuite il peut voir un compteur associé evoluer en temps réel.
Le tout fonctionne sous FF.


Probleme: ne marche pas sous IE 7; :(


Je vous montre le code:

Code : Tout sélectionner

<script type="text/javascript"> function writediv(texte) { document.getElementById('box').innerHTML = texte; } function verifCompteur() { var lot = '<?php echo $_GET['lot']; ?>'; // Si on part du principe qu'on a testé avant si elle existe bien texte = file('/extra-compteur.php?lot=' + lot ); writediv('<span style="color:#1A7917"><b>' + texte +' :</b></span>') } function file(fichier) { if(window.XMLHttpRequest) // FIREFOX xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // IE xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else return(false); xhr_object.open("GET", fichier, false); xhr_object.send(null); if(xhr_object.readyState == 4) return(xhr_object.responseText); else return(false); } function refresh()//script javascript qui va appeler le fonction toutes les secondes { verifCompteur(); setTimeout(refresh, 1000); } </script> </head> <body onload = "refresh();"> <div id="box"></div>

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 10 févr. 2010, 18:11
par stealth35
et que te dit l'erreur de IE7 ?

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 10 févr. 2010, 18:24
par yopopipo
IE n'affiche pas d'erreur, IE ne met tout simplement pas a jour la requete demandée, comme si la liaison n'etait pas effective...

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 10 févr. 2010, 18:35
par stealth35
IE n'affiche pas d'erreur, IE ne met tout simplement pas a jour la requete demandée, comme si la liaison n'etait pas effective...
ta forcement un erreur, en bas a gauche (le petit triangle jaune)

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 10 févr. 2010, 18:36
par Victor BRITO
Il me semble que tu ne vérifie pas suffisamment les objets disponibles pour l'instanciation de l'objet XMLHttpRequest. Essaie de corriger le code définissant ta variable xhr_object comme suit :

Code : Tout sélectionner

// Connexion XMLHTTPRequest function fnXHR () { try { return new XMLHttpRequest (); } catch (e) { try { return new ActiveXObject ('Msxml.XMLHTTP'); } catch (ee) { try { return new ActiveXObject ('Microsoft.XMLHTTP'); } catch (eee) { return false; } } } } var xhr_object = fnXHR ();
Dans le pire des cas, si tu ne t'en sors pas, rien ne t'empêche d'utiliser un framework JavaScript comme jQuery. ;)

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 10 févr. 2010, 18:40
par stealth35
Il me semble que tu ne vérifie pas suffisamment les objets disponibles pour l'instanciation de l'objet XMLHttpRequest. Essaie de corriger le code définissant ta variable xhr_object comme suit :

Code : Tout sélectionner

// Connexion XMLHTTPRequest function fnXHR () { try { return new XMLHttpRequest (); } catch (e) { try { return new ActiveXObject ('Msxml.XMLHTTP'); } catch (ee) { try { return new ActiveXObject ('Microsoft.XMLHTTP'); } catch (eee) { return false; } } } } var xhr_object = fnXHR ();
non parce que IE7 c'est 'new XMLHttpRequest()'
et faire des try dans try dans des try c'est pas beau

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 10 févr. 2010, 19:07
par yopopipo
Toujours pas.. pas d'erreur. mais jamais a jour.
Que faire pour gros debutant comme moi??? Et utiliser un framework?? Comment ca se passe?

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 11 févr. 2010, 10:41
par Victor BRITO
Et utiliser un framework?? Comment ca se passe?
En ce qui concerne le framework jQuery, sa documentation en ligne est bien fournie et te donnera les indications nécessaires. Enfin, si tu es à l'aise avec l'anglais… ;)

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 11 févr. 2010, 12:21
par erasme
Et le innerHTML ? Il y a un bug avec IE...

cf. http://support.microsoft.com/kb/276228/fr

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 11 févr. 2010, 14:47
par jojolapine
Et utiliser un framework?? Comment ca se passe?
En ce qui concerne le framework jQuery, sa documentation en ligne est bien fournie et te donnera les indications nécessaires. Enfin, si tu es à l'aise avec l'anglais… ;)
Il y une traduction de la doc ici: http://jquery.developpeur-web2.com/ (pas encore à jour pour la version 1.4, mais dans l'ensemble pour commencer ;) )
Et une autre doc api (en anglais): http://jqapi.com/

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 11 févr. 2010, 15:17
par Yopopipo
Bon j'ai testé en mettant des alert JS toutes les 5 secondes à la place du innerHTML.
Mais ca ne marche toujours pas, l'alerte me retourne constamment la première valeur trouvée dans la BDD.(je vide le cache de la page à chaque fois)
Franchement ça commence à me prendre le choux !!
Je vais voir ce que ça peut donner avec jquery.

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 11 févr. 2010, 15:25
par jojolapine

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 11 févr. 2010, 16:49
par Yopopipo
YEEEEESSSSSSSSSSS !!! :twisted:
Ca fonctionne,
c'était donc dû au cache.

Voilà donc ma fonction qui fonctionne:

Code : Tout sélectionner

function file(fichier) { xhr_object = getXMLHTTP(); xhr_object.open("GET", fichier + "&nocache=" + Math.random(), false); xhr_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr_object.send(null); if(xhr_object.readyState == 4) return(xhr_object.responseText); }

J'avais pourtant lu les problemes dûs au cache, je le vidais donc comme ceci:

Code : Tout sélectionner

<?php header("Expires: Mon, 17 Jul 1978 05:00:00 GMT"); header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()).' GMT'); header("Cache-Control: no-store, no-cache, must-revalidate");//HTTP/1.1 header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); //HTTP/1.0
Mais il faut croire que c'etait insuffisant.

Merci encore !!

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 12 févr. 2010, 11:35
par Truc
Modération :
Puisque ta question est résolue, je l'indique en ajoutant la petite icône verte "Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

TTu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

Re: [AJAX] Ne fonctionne pas sous IE

Posté : 12 févr. 2010, 12:46
par Yosh
lors d'un appel AJAX, si tu a des problèmes de cache, je te conseille de rajouter un paramètre à ton nom de fichier, du style (avec jQuery)

Code : Tout sélectionner

url: "ajax/file.php?time="+<?php echo time(); ?>
Ainsi le timestamp est toujours différent et donc le fichier est toujours considéré comme nouveau.