Bon bah j'ai testé sur un serveur qui tourne sur mon pc, cela fonctionne.
C'est quoi l'histoire du cable débranché ?
Ta un serveur "distant" ou ton serveur est sur ton pc?
Bon bah j'ai testé sur un serveur qui tourne sur mon pc, cela fonctionne.
C'est quoi l'histoire du cable débranché ?
Ta un serveur "distant" ou ton serveur est sur ton pc?
IE doit mettre en cache le data.cgi.
Peut-être qu'il faudrait placer un random ou une date ds l'url menant au fichier data.cgi pour qu'il aille le chercher sur le serveur.
mon serveur est distant => lorsque je debranche mon cable reseau, la deconnection n'est pas detectée.Envoyé par frodum
j'ai essayé aussi avec un serveur local (easyPHP) mais même sous FireFox ça ne marche plus (AJAX ne fonctionne pas) => ça me semble bizarre que ça marche chez toi...
Tu as essayé de changer des valeurs de variable dans le fichier cgi pendant l'execution du script pour voir si les variables sont mise à jour (avec IE) (en prenant les fichiers que j'ai mis en telechargement) ?
=> comment ferrais tu ça ? ... mes connaissances en js sont très faiblesEnvoyé par frodum
=> y a t-il un moyen de configurer IE pour l'obliger a ne pas mettre de fichier en cache ? c'est pour voir si ça vient de la ...
Bon attends lol, je t'avais pas compris. Je croyais que ton problème était d'afficher les variables dans la page HMTL. Donc mon "cela fonctionne" c'était pour ça lol.
Je faisais mes tests sous Firefox, donc je changeais les valeurs et c'était mis à jour dans la page HTML.
Maintenant pour cette problèmatique, je pense que IE met en cache le fichier, il faudrait ptet modifier l'url pour qu'il la recharche à nouveau. Je vais tester...
Bon j'ai testé vite fait :
Ca semble fonctionner. Tiens moi au courant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var toto = fichier_json+"?cpt="+num_refresh1; http_request.open("GET", toto, true);
sous IE7, j'ai fait "outils" => "options internet" => "parametres (hystorique de navigation)" => dans "vérifier s'il existe une version plus recente...", j'ai coché le bouton "a chaque visite de cette page web" (avant, c'etait sur automatique)
et la ça marche => c'est bien un probleme de mise en cache : on est sur la bonne voie
maintenant, comment faire pour le feinter ?
remarque : mon serveur distant est en faite une carte electronique avec un microcontrolleur qui genere les pages => donc il ne doit pas y avoir de date de modification sur le fichier cgi (je suppose)
=> ça marche pas : chez moi, la page ne se charge plus du tout ...Envoyé par frodum
Essaie d'afficher toto et de tester l'url dans IE.
Ca ne marche plus suite a la manip pour modifier l'url?
Deux solutions:Envoyé par Emcy
Soit le contournement:
http://javascript.developpez.com/faq...#navig.nocache
Soit les headers HTTP (exemple PHP):
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date du passé header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // toujours modifié header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Pragma: no-cache"); // HTTP/1.0
La deuxième solution est bien entendue plus propre....
je le mets ou ce code (je suis debutant) ?Envoyé par denisC
=> oui : ça doit venir que le micro-controlleur ne doit pas trop aimer ce genre d'adresse (je suppose)...Ca ne marche plus suite a la manip pour modifier l'url?
En PHP, au début du fichier. En cgi, aucune idéeEnvoyé par Emcy
j'ai essayé la premiere methode et ça ne marche pas (j'ai plus rien qui s'affichie) => le µC ne doit pas trop apprécier...
le fichier cgi est un fichier qui est traité par un micro-controlleur en interne (c'est ce qui permet de mettre les variables à jour) => il n'a aucune influence sur le protocole de transmission => en fait lorsqu'on interroge le micro-controlleur, il nous renvoie un fichier .cgi qui est en fait un fichier .json (l'extention est .cgi mais le contenu est le même qu'un fichier .json : donc c'est du texte).
=> donc a priori il me faut le header pour un fichier .json : c'est peut être plus simple a trouver ?
Tu ne pourras pas mettre les headers directement dans le JSON. Il faut que ce soit ton serveur web qui les envoie avant le fichier JSON. Donc il faut probablement te pencher vers ton microcontrolleur. De toute façon, il semble que ça soit lui qui coince quelque part....Envoyé par Emcy
et si je mets un header html avec une option nocache dans mon fichier cgi et qu'après je fais un parser pour recuperer mes variables, c'est pas jouable ?
Non, désoléEnvoyé par Emcy38
...le probleme est que je ne peux pas modifier le fonctionnement du µC : une autre solution ? il y a pas une option dans AJAX qui permette de bloquer le cache ? il y a pas une solution en js qui permette de bloquer le cache ?
ah je viens de trouver un truc mais apparament ça ne marche pas sous FF (j'ai pas testé => peut être que sous FF2 ça machera ...) :
=> il faut que je regarde lundi ce que ça donne..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 objXMLHTTP.open("GET", "http://localhost/mon_app/mon_fichier.xml", false); objXMLHTTP.setRequestHeader("Cache-Control","no-cache"); objXMLHTTP.send(null); objXML = objXMLHTTP.responseXML;
Non.Envoyé par Emcy38
JS utilise le cache du navigateur. Donc, il faut empecher les objets de ce mettre en cache niavigateur, soit en paramettrant correctement le navigateur, soit en envoyant les headers HTTP correct, ce qui peut se faire unique ment avec le serveur.
La seule solution JS est d'ajouter un paramètre aléatoire à la requete pour faire "comme si" c'était une autre requete à chaque fois.
j'ai essayé de faire :
=> ça marche pas. J'ai pas bien compris, c'est le serveur ou le client qui prend en compte le header que j'envoie (vous avez un lien qui explique comment sont traités les headers ?) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 http_request.open("GET", fichier_json, true); http_request.setRequestHeader("Cache-Control","no-cache"); http_request.setRequestHeader("Pragma","no-cache"); http_request.send(null);
j'ai fait un test en utilisant juste des frames :
fichier index.html:
fichier status.cgi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>IFOTEC SUPERVISION</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> </HEAD> <FRAMESET rows="42%,58%" > <FRAME name="top" src="Header.html" marginheight=0 marginwidth=10> <FRAME name="left" src="Status.CGI" marginheight=0 marginwidth=10> </FRAMESET> </HTML>
=> et là, les valeurs sont bien mises à jours sous IE.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <TITLE> </TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> <META HTTP-EQUIV="refresh" CONTENT="10"> </HEAD> <body> ......... affichage de mes variables </body> </html>
Peut-être que ça vous donnera des idées .....
COmmence pas ça:Envoyé par Emcy
http://php.developpez.com/faq/?page=...pts_entetehttp
http://mathieu-lemoine.developpez.co...iels/web/http/
Tu en sauras un peu plus sur les ententes
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager