Rafraichir variable php dans une <div>

Signaler
Messages postés
44
Date d'inscription
dimanche 9 novembre 2003
Statut
Membre
Dernière intervention
9 décembre 2008
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjours, je possède un code js, qui me permet de rafraichir une variable php réguièrement avec setInterval. Mais le problème c'est que le code ne fonctionne pas sous IE, alors que cela fonctionne très avec Firefox. J'aimerai savoir si vous avez une idée du problème. Merci.

test ici : http://www.rpgillusion.net/game/test/test.php


<script type="text/javascript">


var obj = null;


var FILENAME = "test.php";


function Chargeurl (url) {


if(window.XMLHttpRequest)


obj = new XMLHttpRequest();


else if(window.ActiveXObject) obj = new ActiveXObject("Msxml2.XMLHTTP");


else obj = null;


if (obj== null) return;


obj.open("GET", url, true);


obj.onreadystatechange = function () {


if(obj.readyState == 4 ) {


var req = obj.responseText;


if(document.getElementById)


{


document.getElementById("titre_d").innerHTML = req;


}


else if(document.all)


{


document.all["titre_d"].innerHTML = req;


}


}};


obj.send(null);


}


window.setInterval("Chargeurl(FILENAME)",1000);


</script>

et la div avec un time()


<?php

echo time();

?>

6 réponses

Messages postés
44
Date d'inscription
dimanche 9 novembre 2003
Statut
Membre
Dernière intervention
9 décembre 2008

J'ai modifier le code de cette mannière :

function getHTTPObject()
{

var xmlhttp = false;

if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();

else if (window.ActiveXObject)

xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 

    if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
    {
        try
        {
            xmlhttp = new XMLHttpRequest();
        }
        catch (e)
        {
            xmlhttp = false;
        }
    }

    if (xmlhttp)
    {
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState == 4) /* 4 : état "complete" */
            {
                if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
                {
                    document.getElementById('babble').innerHTML=xmlhttp.responseText;
                   
                    }
            }
        }
    }
    return xmlhttp;
}
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
Il semblerait que ce soit
l'initialisation de ton objet
plutôt que de long discours voir l'approche...

c'est ICI
;O)
Messages postés
44
Date d'inscription
dimanche 9 novembre 2003
Statut
Membre
Dernière intervention
9 décembre 2008

Non toujours pas mieu j'ai essayé les 2 codes donné en exemple et j'ai toujours la meme erreur. Je je désespère.

Voici le code complet de la page :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>test</title>
</head>
<script type="text/javascript">

function getHTTPObject()
{
  var xmlhttp = false;

  /* Compilation conditionnelle d'IE */
  /*@cc_on
  @if (@_jscript_version >= 5)
     try
     {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
     catch (e)
     {
        try
        {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E)
        {
           xmlhttp = false;
        }
     }
  @else
     xmlhttp = false;
  @end @*/

  /* on essaie de créer l'objet si ce n'est pas déjà fait */
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
  {
     try
     {
        xmlhttp = new XMLHttpRequest();
     }
     catch (e)
     {
        xmlhttp = false;
     }
  }

  if (xmlhttp)
  {
     /* on définit ce qui doit se passer quand la page répondra */
     xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState == 4) /* 4 : état "complete" */
            {
                if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
                {
                    document.getElementById('babble').innerHTML=xmlhttp.responseText;
                   
                    }
            }
        }
    }
    return xmlhttp;
}

function rafraichir() {
        var xmlhttp = getHTTPObject();
        xmlhttp.open('GET','test4.php',true);
        xmlhttp.send(null);
        setTimeout('rafraichir()', 1000);
    }
    rafraichir();
   
</script>
 

   

<? echo time(); ?>

</html>
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
Bonjour,

    une histoire de cache...

        obj.open("GET", url+'/?'+new Date(), true);

    même s'il est vrai que pour xmlhttprequest  :
     try           {    obj = new ActiveXObject("Microsoft.XMLHTTP");    }
    catch (e)   {    try            {    obj = new ActiveXObject("Msxml2.XMLHTTP");    }
                        catch (e)     {    try             {    obj = new XMLHttpRequest();    }
                                                catch (e)    {    return;    }
                                          }
                    }

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
44
Date d'inscription
dimanche 9 novembre 2003
Statut
Membre
Dernière intervention
9 décembre 2008

Ok merci beaucoup Bultez pour ta solution de cache. Sinon j'ai une dernière question. Comme tu as pu  le constater le code sert à faire un refresh régulier dans une
. La je cherche à avoir plusieurs
qui ont tous un refresh régulier, mais en utilisant le meme code js.

Donc on aurait des div de ce genre :
text

text

text
Etc ...

J'imagine donc qu'il faut mettre un for (boucle) dans le code, donc j'ai fais comme ceci :

for(i=1; i<=10; i++){
                    document.getElementById("babble"+ i).innerHTML=xmlhttp.responseText;
                  }

Puis après sur la fonction rafraichir j'ai rajouté thingId :

function rafraichir(thingId) {

Mais ca me donne pas le résultat voulu.

J'ai la div 2 qui s'affiche 4 fois sur la deuxième secondes.

http://www.rpgillusion.net/game/test/test7.php

Peut tu me renseigner? Merci
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>La je cherche à avoir plusieurs

    passe le div en paramètre....
    je n'ai pas tout regardé mais ( ou pas loin )

function getHTTPObject(prm)
    ...
    document.getElementById(prm).innerHTML=xmlhttp.responseText;
    ...

    dans rafraîchir aussi
   
function rafraichir(id_du_div,nom_du_php,delai_voulu) {
        var xmlhttp = getHTTPObject(id_du_div);
        xmlhttp.open('GET',nom_du_php,true);
        xmlhttp.send(null);
       setTimeout( function() { rafraichir(id_du_div,nom_du_php,delai_voulu); }, delai_voulu );
    }

    et appel : rafraichir('babble1','test4.php',1000);
                  
    enfin... l'esprit est là ! à toi de mettre au point, d'affiner !

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]