Bonjour à tous,
Je rencontre un petit soucis lors d'un essai d'un code en Ajax.
J'utilise une page html classique avec un div à l'intérieur qui va recevoir les données de l'ajax :
Code :
- <html>
- <head>
- <title></title>
- <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
- <script language="JavaScript" type="text/javascript" src="points.js">
- </script>
- <script language=javascript>
- setInterval(AddPoints, 5000);
- </script>
- </head>
- <body bgcolor="#ffffff" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
- <div id="ajax"></div>
- </body>
- </html>
|
Comme vous pouvez le voir, dans cette page un script javascript est appelé (points.js) qui contient une fonction AddPoints, fonction que je lance sur un intervale de 5 secondes grâce à setInterval(AddPoints, 5000);
Voici le contenu du javascript qui va simplement récupérer l'heure + minute + secondes et l'insérer dans le div.
Code :
- var xmlhttp;
- function AddPoints(pts)
- {
- xmlhttp=GetXmlHttpObject();
- if (xmlhttp==null)
- {
- alert ("Browser does not support HTTP Request" );
- return;
- }
- var url="points.php";
- url=url+"?login="+pts;
- xmlhttp.onreadystatechange=pointsChanged;
- xmlhttp.open("GET",url,true);
- xmlhttp.send(null);
- }
- function pointsChanged()
- {
- if (xmlhttp.readyState==4)
- {
- document.getElementById('ajax').innerHTML=xmlhttp.responseText;
- }
- }
- function GetXmlHttpObject()
- {
- if (window.XMLHttpRequest)
- {
- // code for IE7+, Firefox, Chrome, Opera, Safari
- return new XMLHttpRequest();
- }
- if (window.ActiveXObject)
- {
- // code for IE6, IE5
- return new ActiveXObject("Microsoft.XMLHTTP" );
- }
- return null;
- }
|
Mon problème est le suivant : Sous firefox, aucun pb, le script se relance toutes les 5 secondes et le nouveau temps est correctement affiché dans le div.
Par contre sous Internet explorer 8, la fonction se lance une première fois, mais ensuite l'heure reste fixe et donc ne change plus.
J'ai d'abord cru à un dysfonctionnement de la fonction setInterval, puis me suis rendu compte qu'en rafraichissant la page, l'heure restait la même dans le div.
J'ai, à ce moment, vider le cache d'ie8 et la, le calque s'est mis à jour.
Ce serait donc le cache d'internet explorer qui conserverait les données et donc n'afficherait pas celles envoyées par l'ajax.
Quelqu'un sait il si il y a un moyen de contourner ce problème ou si mon script est mal construit ?
Merci d'avance.
Message édité par Yaotzyn le 11-02-2010 à 15:56:47