begin process at 2012 05 29 14:42:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

Pb AJAX sous IE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb AJAX sous IE

vendredi 17 novembre 2006 à 10:41:39 | Pb AJAX sous IE

Emcy

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
				if
				(http_request.status == 200)
même si mon cable reseau est debranché !!???!!

voici mon projet :
http://cjoint.com/?lqrVZsvbxE

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>
   
    <body onload="fonction_start()">
    <!-- <body> -->
        <noscript> La page ne peut pas être affichée correctement car Javascript n'est pas activé</noscript>
       
        <span style="cursor: pointer; text-decoration: underline;" onclick="fonction_start()">
                Lancer la requete
        </span>
       
        <p>Etat Communication : <span id="ComStatus">?</span></p>
        <p>Etat refresh1 : <span id="refresh1">?</span></p>
        <p>Etat refresh2 : <span id="refresh2">?</span></p>
       
        <p>SerialNumber : <span id="SerialNumber">?</span></p>
        <p>Temperature : <span id="Temperature">?</span>°C</p>
        <p>Batterie : <span id="Batterie">?</span>V</p>
        <p>UpTime : <span id="UpTime">?</span></p>
        <p>Tempo : <span id="Tempo">?</span></p>
        <p>Optic1 : <span id="Optic1">?</span></p>
        <p>Optic2 : <span id="Optic2">?</span></p>
        <p>Optic3 : <span id="Optic3">?</span></p>
        <p>PowerON1 : <span id="PowerON1">?</span></p>
        <p>PowerON2 : <span id="PowerON2">?</span></p>
        <p>PowerON3 : <span id="PowerON3">?</span></p>
        <p>ReveilEnb1 : <span id="ReveilEnb1">?</span></p>
        <p>ReveilEnb2 : <span id="ReveilEnb2">?</span></p>
        <p>ReveilEnb3 : <span id="ReveilEnb3">?</span></p>
       
    </body>
</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 (num_connectionbefore == num_connection)
    {
        document.getElementById("ComStatus").innerHTML = "OFF";
    } else {
        document.getElementById("ComStatus").innerHTML = "ON";
    }
    num_connectionbefore = num_connection;*/
   
    if (num_connectionOK == 1)
    {
        document.getElementById("ComStatus").innerHTML = "ON";
    } else {
        document.getElementById("ComStatus").innerHTML = "OFF";
    }
    num_connectionOK = 0;
   
   
    http_request = getXhr();       
   
    http_request.onreadystatechange = request_execute;
    http_request.open("GET", fichier_json, true);
    http_request.send(null);
}

function getXhr()
{
    var xhr = null;
   
    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);
           
            num_connectionOK = 1;
            document.getElementById("ComStatus").innerHTML = "ON";
           
            num_refresh2++;
            num_connection++;
                       
            document.getElementById("refresh2").innerHTML = num_refresh2;
           
            document.getElementById("SerialNumber").innerHTML = JSONvariables.SerialNumber;
            document.getElementById("Temperature").innerHTML = JSONvariables.Temperature;
            document.getElementById("Batterie").innerHTML = JSONvariables.Batterie;
            document.getElementById("UpTime").innerHTML = JSONvariables.UpTime;
            document.getElementById("Tempo").innerHTML = JSONvariables.Tempo;
            document.getElementById("Optic1").innerHTML = JSONvariables.Optic1;
            document.getElementById("Optic2").innerHTML = JSONvariables.Optic2;
            document.getElementById("Optic3").innerHTML = JSONvariables.Optic3;
            document.getElementById("PowerON1").innerHTML = JSONvariables.PowerON1;
            document.getElementById("PowerON2").innerHTML = JSONvariables.PowerON2;
            document.getElementById("PowerON3").innerHTML = JSONvariables.PowerON3;
            document.getElementById("ReveilEnb1").innerHTML = JSONvariables.ReveilEnb1;
            document.getElementById("ReveilEnb2").innerHTML = JSONvariables.ReveilEnb2;
            document.getElementById("ReveilEnb3").innerHTML = JSONvariables.ReveilEnb3;           
        } else if (http_request.status == 404){ // page non trouvée
            document.getElementById("ComStatus").innerHTML = "OFF";
        }
    }
}


fichier data.cgi :
var JSONvariables = {
    "SerialNumber": "%30",
    "Temperature": "%31",
    "Batterie": "%32",
    "UpTime": "%34",
    "Tempo": "%33",
    "Optic1": "%21",
    "Optic2": "%22",
    "Optic3": "%23",
    "PowerON1": "%24",
    "PowerON2": "%25",
    "PowerON3": "%26",
    "ReveilEnb1": "%27",
    "ReveilEnb2": "%28",
    "ReveilEnb3": "%29"
}


				
						



vendredi 17 novembre 2006 à 13:35:52 | Re : Pb AJAX sous IE

syndrael

tu peux tester avec un 'delete http_request ' à la fin de ton request_execute ?
J'aime bien effacer des variables kan elles servent plus..
S.
vendredi 17 novembre 2006 à 16:12:11 | Re : Pb AJAX sous IE

Emcy

ç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
maintenant, comment faire pour le feinter ?

vendredi 17 novembre 2006 à 17:14:30 | Re : Pb AJAX sous IE

nickadele

Membre Club Administrateur CodeS-SourceS
Bonjour, vu que tu relances l'appel toutes les 5 secondes, n'y aurait-il pas un conflit entre l'appel x et l'appel x+1 ? As tu essayé sans le timer ? Nickadele
vendredi 17 novembre 2006 à 22:00:12 | Re : Pb AJAX sous IE

rubiks10

Membre Club
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.

voila


-- The Rubik's Man --
lundi 20 novembre 2006 à 08:46:51 | Re : Pb AJAX sous IE

Emcy

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)

var toto = fichier_json+"?cpt="+num_refresh1;

lundi 20 novembre 2006 à 11:42:31 | Re : Pb AJAX sous IE

rubiks10

Membre Club
Oui effectivement moi aussi j'utilise cette méthode pour les images sous IE car sous firefox j'ai pas le problème

Mais avec ton code sous Firefox j'ai également le meme problème que sous IE.

Je vais essayer des hacks et je te tiens au courant

-- The Rubik's Man --
lundi 20 novembre 2006 à 15:22:10 | Re : Pb AJAX sous IE

Emcy

alors, tu ne trouve pas ? :( ... moi, je patauge complet dans la semoule ....

lundi 20 novembre 2006 à 18:30:06 | Re : Pb AJAX sous IE

PetoleTeam

Membre Club

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...

;0)
mardi 21 novembre 2006 à 09:04:51 | Re : Pb AJAX sous IE

Emcy

cette solution ne va pas (il me semble) : c'est pas une page web que je charge mais un fichier texte


1 2

Cette discussion est classée dans : document, num, getelementbyid, innerhtml, jsonvariables


Répondre à ce message

Sujets en rapport avec ce message

pb de getElementById [ par kidpigeyre ] for(var i=0;i { document.getElementById("tete")[i].innerHTML=document.getElementById("tete")[i].innerHTML.substr(0,3); }voila ça ça ne ma obj.innerHTML [ par fgingat ] Bonjour à tous .. Voila mon premier poste concerne un soucis de comprehension de la methode de fonctionnement de obj.innerHTML  A savoir sur une page Problème avec la fonction switch [ par stiml ] Bonjour, Je sais qu'on a posté plusieurs questions sur ce sujet mais je n'est pas trouvée ma réponseMerci de m'éclairer sur cette fonction qui ne fonc couleur, radiobutton, onclick [ par gabs77 ] slt, j'ai un souci avec mon formulairej'ai un formulaire de base auquel j'ai des formulaires spécifiques par rapport a des choix effectuer dans ce for document.body vs document.write [ par arnaultp ] Bonjour à tous!Je n'arrive toujours pas très bien à comprendre ce que font document.body et document.write.Cela fait seulement 2 semaines que je code Probleme avec IE [ par theopil ] Voila sous firefox sa marche niquel , mes pas sous IE , et j tourne en rond et je ne trouve pas l'erreurfunction affi Javascript et IE 6 ou 7 [ par memento59800900 ] Bonsoir à toutes et à tous !J'ai créé une page web (entre autres) pour mon boulot sous firefox, et seule une partie du javascript fonctionne.Je pense Barre de progression Javascript [ par AurelR ] BonjourActuellement j'essaye d'envoyer un fichier sur mon serveur (sa j'y arrive) mais j'aimerais afficher une barre de progression.En cherchant un pe Faire un bouton pour supprimer des input dynamique (removeChild) [ par hAdEsS ] Bonjour à tous,j'ai trouvé un petit scrit qui me permet d'ajouter des inputs à mon formulaire.Actuelement un lien est généré à coté des input créés.To


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,560 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales