Rafraichir variable php dans une <div>

sagaff Messages postés 44 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 9 décembre 2008 - 2 avril 2008 à 15:08
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 4 avril 2008 à 10:33
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

sagaff Messages postés 44 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 9 décembre 2008
2 avril 2008 à 20:11
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;
}
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
2 avril 2008 à 20:20
Bonjour,
Il semblerait que ce soit
l'initialisation de ton objet
plutôt que de long discours voir l'approche...

c'est ICI
;O)
0
sagaff Messages postés 44 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 9 décembre 2008
2 avril 2008 à 20:50
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>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
3 avril 2008 à 06:41
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]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sagaff Messages postés 44 Date d'inscription dimanche 9 novembre 2003 Statut Membre Dernière intervention 9 décembre 2008
3 avril 2008 à 17:35
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 avril 2008 à 10: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]
0
Rejoignez-nous