Forum Clubic

[Ajax + Php] Cache de IE ?

Bonjour,

Je travails depuis un petite heure sur un script basique d’AJAX, servant simplement à appelé une page toutes les 5 secondes dans un cadre précis. Le script marche niquel sous FF, mais sous IE ca déconne :s !

Le problème est en faite que IE dès qu’il ne voit pas le code ajax changer, affiche la page comme elle était la dernière fois, alors que celle-ci à très bien pu changer en cours de temps.

Dès que je vide le cache, il va bien charger la page comme elle est actuellement, mais sinon il charge par défaut la page qu’il doit donc avoir en cache.

Si Ajax modifie sa requete, et donc que l’url à afficher dans mon cadre est différente (vu que je passe les paramètres en GET dans l’url), là il va bien charger la page courante.

Si je résume mes scripts en retirant mes fonctions qui n’intervienne pas directement, ou du moins que je pense ça fait a peu près comme ceci :

Mon code Ajax :

function Requete(formulaire, action)
{
 var xhr_object = null; 

 if (window.XMLHttpRequest) {
  xhr_object = new XMLHttpRequest();
 } else if (window.ActiveXObject) {
  xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
 } else { 
  alert("Erreur : utilisez Firefox ou Internet Explorer"); 
  return;
 } 

 switch (action) {
 case 0:
  xhr_object.open("GET", 'mapage.php', true); // Afficher
  break;
 case 1:
  xhr_object.open("GET", 'mapage.php?titre='+formulaire.titre.value, true); // Mettre à jour
  break;
 }

 xhr_object.onreadystatechange = function()
  { 
   if (xhr_object.readyState == 4) {
 var tempobj = document.all ? document.all.zone : document.getElementById("zone");
 tempobj.innerHTML=xhr_object.responseText;
   }
  } 

 xhr_object.send(null);
}

function reserverRequete()
{
  if(document.post.titre.value != '')
  {Requete(document.post, 1);}

  else if(document.post.titre.value == '')
  {Requete(document.post, 0);}
}

setInterval("reserverRequete()", 5000);

Mon code xHtml :

<form method="POST" action="" name="post">
  <input type="text" name="titre" value="" />
</form>

Mon ancienne mapage.php (ce qu’affiche IE par défaut) :

<?php
echo 'hey1';
?>

Ma nouvelle mapage.php (ce qu’affiche IE seuelment après modification de l’url) :

<?php
echo 'hey2';
?>

Merci de bien vouloir m’aider, pour ce qui est du code Ajax, je connais pas le Ajax on me l’a simplement donné, je sais pas s’il est complet et compatible.

Bon en attendant mieux si c’est possible j’ai simplement indiqué qu’il ne fallait pas mettre en cache la page avec un header :

header('Cache-Control: no-cache');

Ca marche, m’enfin ça me semble être du bricolage, et j’aime pas trop ça ^^ !

Au lieu de GET, met POST, ca inibe le cache

Je viens d’avoir le même problème mais avec des images.
Un petit timestamp (même si ça ne fait pas forcément propre) et ça roule impecc :slight_smile:

essaye de faire un load in div ca sera bien mieu : www.dynamicdrive.com…

Sujet créé le 16 Déc. 06 à 16h29.
Pfiouh, ça me rajeunit pas tout ça, mes débuts en Ajax à cette époque, amusant :slight_smile:

Eu j’ai pas tout compris la :yeux2:

Pourquoi avoir remonté un topic qui date de prêt de 2 ans -_-

Pour donner son avis et apporter une autre solution.

Je suppute que sdnthebest a du faire une recherche sur le forum est s’est retrouvé sur ce topic, peut-être qu’il n’a même pas fait attention à la date :confused: !