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 !!!
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
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)
Ainsi le timestamp est toujours différent et donc le fichier est toujours considéré comme nouveau.