XMLHttpRequest -> pb de refraichissement

XMLHttpRequest -> pb de refraichissement - PHP - Programmation

Marsh Posté le 14-03-2005 à 14:03:21    

Bonjour,
 
Je suis en train de développer des pages WEB à l'aide de php (pour la gestion d'une base mySQL) et de javascript (pour le rafraichissement des données).
 
J'ai récement découvert la fonction XMLHTTPRequest qui permet de récupérer, sous forme d'une chaine de caractère, le contenu d'une page WEB.
 
Pour le rafraichissement de mes pages WEB j'utilise donc l'astuce suivante :
- j'ai une page graphique (contenant un certain nombre de <div> )
- j'ai une page refresh.php (contenant la connexion à la base de données, et les différents textes à afficher dans les <div> en fonction d'une requete SQL)
- depuis la page graphique j'appelle a fréquence régulière (via settimeout) une fonction évaluant chaque ligne de code de la page refresh.php récupérées par la fonction XMLHTTPRequest.
 
Le problème :
 
- à l'ouverture de la page, les données affichées sont celles présentes dans la base de données.
 
- le rafraichissement se fait à fréquence régulière (ajout d'un alert pour vérifier que la fonction s'éxécute bien)
 
- mais la page refresh.php garde en mémoire les valeurs récupérées lors de la première connexion à la base de données = ouverture de la page graphique (le rafraichissement des données ne se fait pas).
 
Je n'arrive pas à savoir d'ou vient le problème.
 
Quelqu'un aurait il une petite idée.
 
Merci d'avance
 
PS : - j'utilise EasyPHP1.7 ou EasyPHP 1.8
- je me connecte à la base à l'aide la fonction mysql_connect
- je ferme la connexion avec la fonction mysql_close

Reply

Marsh Posté le 14-03-2005 à 14:03:21   

Reply

Marsh Posté le 14-03-2005 à 14:13:56    

Citation :

- depuis la page graphique j'appelle a fréquence régulière (via settimeout) une fonction évaluant chaque ligne de code de la page refresh.php récupérées par la fonction XMLHTTPRequest.


ça ne serait pas au niveau de cette fonction que tu ne met pas bien à jour tes données ?
Ma boule de cristale étant en panne (hé oui, encore) il serait sympa de ta part de nous monter un peu de code (notament la fonction en question)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 14-03-2005 à 14:19:31    

je pencherais pour un problème de cache, mais comme dit Xav_ le diagnostique serait plus facile avec un bout de code.

Reply

Marsh Posté le 14-03-2005 à 17:20:55    

Jaddes, laisse moi deviner, tu as teste avec Internet Explorer, non ?
 
D'apres mon experience, le probleme que tu cites provient du fait qu'IE mets en cache le resultat obtenu via XMLHttpRequest.
 
J'avais eu ce probleme et je me rappelle plus comment je l'avais solutionne.
Il faut essayer de dire a IE de ne pas metre les donnees en cache (avec les fonction header qui vont bien).
 
Si tu essayes avec FF ton code devrait normalement fonctionner.


Message édité par cerel le 14-03-2005 à 17:22:32
Reply

Marsh Posté le 14-03-2005 à 19:51:35    

c'est un truc du genre (pas testé)

Code :
  1. <meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 14-03-2005 à 20:41:17    

Le probleme est qu'IE mets en cache le resultat obtenu via XMLHttpRequest.  
Or cet objet ne renvoi pas d'html a proprement parler, mais du texte. Donc pas de balise meta...
 
Faudrait neanmoins voir, si IE fait attention aux headers http recus via XMLHttpRequest, si c'est le cas, alors on pourrait envoyer les headers http grace a la commande "header" de php.
 
Sinon il faut "ruser" pour eviter le cache d'ie.

Reply

Marsh Posté le 17-03-2005 à 22:11:34    

A priori, IE fait attention aux headers reçus via XMLHttpRequest, je m'en suis déjà servi pour imposer un charset.
+1 pour la solution de Cerel donc ;)


Message édité par Tharkun92 le 17-03-2005 à 22:12:35
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed