La donnée récupérée ne se met pas à jour par l'Ajax

Signaler
Messages postés
47
Date d'inscription
mardi 2 novembre 2004
Statut
Membre
Dernière intervention
12 juin 2020
-
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
-
Bonjour, quelqu'un pourra t-il me dire pourquoi le changement ne s'effectue uniquement en ouvrant la page html (un changement par phpadmin ne se répercute pas en direct) ?
le fichier test.php se connecte à une bdd et renvoie une ligne: echo ''.$row['prix'].'

';
et le fichier test.html contient (le code n'est pas de moi, je l'ai pris un peu partout sur le net):
<script language="javascript">
var xhr_object;
function affiche()
{
   setTimeout('affiche()',10000);
   if(window.XMLHttpRequest) // Firefox
      xhr_object = new XMLHttpRequest();
   else if(window.ActiveXObject) // Internet Explorer
      xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
   else
  { // XMLHttpRequest non supporté par le navigateur
      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
      return;
   }
   xhr_object.open("GET", "test.php", true);
   //xhr_object.async=false;
   xhr_object.onreadystatechange = function()
  {
      if(xhr_object.readyState == 4)
   {
     //alert(xhr_object.responseText);
   document.getElementById("div_b").innerHTML=xhr_object.responseText;
   }
 }


   xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
   xhr_object.send(null);
}


</script>
</head>

...

5 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello,

est-ce que tu peux réexpliquer plus clairement stp, je n'ai pas compris. merci

à+
Messages postés
47
Date d'inscription
mardi 2 novembre 2004
Statut
Membre
Dernière intervention
12 juin 2020

normalement avec le code et setTimeout('affiche()',10000);
le système devrait affiché les données récentes de la bdd tous les 10s. Pourquoi ne le fait-il pas ? Par contre si je ferme la page html et je que le relance, l'affichage est correcte.
J'ai enlevé le commentaire de la ligne //alert(xhr_object.responseText) le message s'affiche bien tous les 10s mais c'est le même message même s'il y a un changement dans la bdd.
Il y a un bug quelque part !!!
J'espère être compréhensible.
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
OK, ça m'arrivait aussi quand j'utilisais la même métode que toi pour mes objets xhr, comme si la requête était mise en cache, et ne se réexécutait pas.
Essaie avec cette classe-là plutôt qui est plus pratique, j'ai pas de problème avec, mais attention lis mes commentaires en-dessous et fais les modifs que je mentionne :

http://www.javascriptfr.com/codes/CLASSE-AJAX-COMPLETE_42970.aspx

à
Messages postés
47
Date d'inscription
mardi 2 novembre 2004
Statut
Membre
Dernière intervention
12 juin 2020

J'ai utilisé le code dans ce sens mais ça ne marche pas,
<script language="javascript" src="ajax.js">


ObjAJAX = new Ajax();
function affiche()
{
   setTimeout('affiche()',10000);
ObjAJAX.setParam ({
url          : "test.php",
returnFormat : "txt",
method       : "GET",
data         : "mode=1&decimal=2",
asynchronus  : true,
onComplete   : "document.getElementById('boite1').innerHTML = response"
});
ObjAJAX.execute();
}
...

  
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Eventuellement essaie avec des intervalles plutôt qu'un timeout... Si c pas ça demande sur javascriptfr.
à+