cs_Emcy
Messages postés42Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention17 juillet 2012
-
17 nov. 2006 à 10:41
cs_Emcy
Messages postés42Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention17 juillet 2012
-
23 nov. 2006 à 13:51
bonjour,
j'ai créé un mini projet où j'ai 3 fichiers :
- 1 fichier html : pour affichier ma page
- 1 fichier javascript : script lié à ma page html
- 1 fichier cgi (mis à jour dynamiquement par le serveur en interne) : il contient des variables parsée en JSON
=> j'affiche ma page HTML et j'utilise en script (AJAX) qui se lance toutes les 5secondes et qui va chercher dans le fichier cgi mes variables pour les afficher
tout fonctionne bien sous FireFox mais je ne sais pas pourquoi, sous IE (6 et 7) la page met les variables a jour au demarrage une fois puis ne le fait plus
=> le probleme est que sous IE je rentre toutes les 5s dans la boucle
voila le code si vous preferez ne pas telecharger le fichier :
fichier Index.html :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="RecupereVariables.js"></script>
</head>
<!-- -->
<noscript> La page ne peut pas être affichée correctement car Javascript n'est pas activé</noscript>
Lancer la requete
Etat Communication : ?
Etat refresh1 : ?
Etat refresh2 : ?
SerialNumber : ?
Temperature : ?°C
Batterie : ?V
UpTime : ?
Tempo : ?
Optic1 : ?
Optic2 : ?
Optic3 : ?
PowerON1 : ?
PowerON2 : ?
PowerON3 : ?
ReveilEnb1 : ?
ReveilEnb2 : ?
ReveilEnb3 : ?
</html>
fichier RecupereVariables.js :
var fichier_json = "./data.cgi";
var http_request = false;
var num_refresh1 = 0;
var num_refresh2 = 0;
var num_connection = 1;
var num_connectionbefore = 0;
var num_connectionOK = 0;
function fonction_start()
{
num_connectionOK = 1;
makeRequest();
setInterval(function(){makeRequest();},5000); // boucle toutes les 5s
}
function makeRequest()
{
http_request = false;
num_refresh1++;
document.getElementById("refresh1").innerHTML = num_refresh1; // detection de connection
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}
function request_execute()
{
//alert("execution de la fonction");
//alert(http_request.status);
if (http_request.readyState == 4)
{
if (http_request.status == 200) // page trouvée
{
eval(http_request.responseText);
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 21 nov. 2006 à 22:43
Excuse moi .... je t'avais oublié
Bon ben je viens de reprendre ton code et moi ma méthode d'utiliser un hackTime marche parfaitement!!!!!! sans rien régler dans les navigateurs
voici la fin de la fonction qui envoie la requête :
........
........
http_request = getXhr();
var hackTime = (new Date()).getTime();
http_request.onreadystatechange = request_execute;
http_request.open("GET", fichier_json+'?'+hackTime, true);
http_request.send(null);
après oui c'est sur ca dépend du type de serveur mais bon moi j'ai jamais eu de problème en utilisant ca et je l'utilise sous
apache avec php et même jsp
et l'url est sur d'être trouvée puisqu'en fait c'est comme si tu lui envoyais un paramètre en méthode GET :
fichier.cgi?0294087287
et ca fonctionne tout le temps car c'est le timestamp
cs_Emcy
Messages postés42Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention17 juillet 2012 17 nov. 2006 à 16:12
ça change rien
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 donc un probleme de mise en cache du fichier cgi ce qui empeche de le recharger a chaque appel
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 17 nov. 2006 à 22:00
Salut
En fait je ne comprends pas trop ton problème car moi sous firefox ou sur IE la requete ajax se lance bien toute les 5 secondes
et la variable refresh s'incrémente bien sur la page sur les 2 navigateurs.
Donc peux tu mieux expliquer ton problème stp??
Par contre j'ai voulu vérifier quelque chose en lancant la page et en modifiant moi meme les données dans la variables JSON et par contre sur aucun navigateur les données sont mise à jour quand je les modifie comme si c'était le serveur qui le faisait.
cs_Emcy
Messages postés42Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention17 juillet 2012 20 nov. 2006 à 08:46
J'ai bien la variable refresh qui fonctionne : le probleme est que si je change une valeur de variable dans le fichier cgi pendant l'execution du script, elle n'est pas mise à jour => je suis sure que c'est un probleme que IE mets le fichier en cache (je n'ai pas le probleme sous Firefox : par defaut, il doit être configuré differemment)
=> j'ai trouvé sur le net des personne qui avaient le même type de probleme : il modifiaient l'URL de façon a avoir un nom unique a chaque envoie en rajoutant un nombre aléatoire mais ça ne marche pas avec serveur qui est en fait un micro-controlleur (il n'accepte pas ce genre d'ecriture à priori : j'ai plus rien qui s'affiche)
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 20 nov. 2006 à 18:30
B
onjour...
as tu essayé avec les balises meta...
<META HTTP-EQUIV" PRAGMA " CONTENT"NO-CACHE"><META HTTP-EQUIV" REFRESH " CONTENT"5">
à la place de setInterval...
cs_Emcy
Messages postés42Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention17 juillet 2012 23 nov. 2006 à 10:33
c'est bon, j'ai reussi a faire fonctionner ta methode : j'ai du modifier le code source de mon serveur (j'aime pas trop ça) car il n'acceptait pas ce genre d'ecriture => monchemin.cgi?toto=0101211
rubiks10
Messages postés224Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention 6 juin 20073 23 nov. 2006 à 13:13
Comment ca il n'accepte pas ce genre d'écriture???????
Il doit accepter cet url obligatoirement et sans rien changer normalement!!!! car c'est un paramètre passé en GET c'est la base!!
Donc je ne vois pas pourquoi ton serveur ne l'acceptais pas... c'est qu'il devait y avoir un problème.
cs_Emcy
Messages postés42Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention17 juillet 2012 23 nov. 2006 à 13:51
mon serveur n'est pas un PC, c'est une petite carte avec un micro-controlleur qui tourne a 25MHz : le programme de base acceptait d'avoir un parametre s'il recevait un SET mais pas un GET => j'ai donc fait la modif pour qu'il tronque l'URL reçue après le "?"