Jquery, Ajax, SetInterval, PHP

Bonjour,

j'ai développé une application qui permet de créer un petit diaporama de page html
Pour ce faire :
J'utilise AJAX qui via setinterval, va rafraichir le contenu d'une DIV

<html>
<head>
<script>
function playlist(){
<?php
$duree = get_duree();
?>
$("#madiv").load(content.php');
}
setInterval('playlist()', <?php echo $duree ?>);
</script>
</head>
<body>
<DIV id='madiv'></DIV>
</body>
</html>

Voilà, ce script fonctionne sans problème pour le rafraichissement
L'interval de refresh est récupé via la fonction get_duree (ex : 10secondes)

Le premiere fois que je lance ce script. Aucun problème
Par contre si je change (dans la DB) la valeur de get_duree(), le changement ne s'effectue jamais.
Hors, la fonction Playlist devrait être réexecutée à chaque refresh

Je suppose que la fonction playlist (Jquery) ne veut pas exécuter le PHP ....
Comment faire ?

D'avance je vous remercie

Bonne journée

6 réponses

  1. Bonjour

    À chaque refresh, il n'y a que 'madiv' qui est remis à jour. Ta fonction 'playlist()' ne change pas, et la durée du setInterval ne change donc pas non plus.
    Il faut bien te rendre compte que
    <?php
    $duree = get_duree();
    ?> 
    n'existe absolument pas dans le javascript (vérifie en regardant le source de la page affichée) et n'a donc aucune raison de s'exécuter !
    0
    1. J'ai essayé avec une variable de SESSION, sans succès

      <script>
      function playlist(){
      <?php
      $_SESSION['duree']= get_duree();
      ?>
      $("#madiv").load(content.php');
      }
      setInterval('playlist()', <?php echo $_SESSION['duree'] ?>);
      </script>

      dans le fichier content.php, je modifie la valeur de ma variable de session (je réattaque la db)

      Apparemment, ca ne fonctionne pas non plus ....

      Quand je fais un "view source code", je vois bien le bon code, correct ... mais en réalité, le modification ne s'effectue pas

      Merci d'avance

      REMARQUE
      Le premier passage dans la fonction playlist s'effectue sans problème, mais c'est à partir du premier refresh que cela ne va plus
      0
      1. J'ai essayé de t'expliquer, sans succès

        Le PHP N'EXISTE PAS dans le script javascript reçu par le client. Il n'a aucune raison de s'exécuter.

        Que tu modifies $_SESSION['duree'] ou $duree tout court d'ailleurs, ça ne change rien : le script a été envoyé au client la première fois avec certaines valeurs, et quand tu fais de refresh tu ne renvoies que 'madiv', pas le script. Donc le script reste tel quel, avec la valeur qu'il y avait dedans au départ
        0
        1. Oui bon ok, j'ai bien compris finalement .....
          J'essaie en réalité de trouver une solution à mon problème

          J'essaie de pouvoir placer des variables dynamiques sur cette ligne
          $("#madiv").load(content.php').hide().slideDown(3000).Delay(7000).slideUp(3000 ...

          Oui, j'ai une interface user admin, dans laquelle j'aimerais que l'utilisateur puisse changer les effets, les temps de transition .....

          j'ai aussi envie de mettre une variable dynamique dans cette ligne
          setInterval('playlist()', 15000);

          Avez-vous une idée ? merci d'avance
          0
          1. Je ne suis pas expert en jQuery, et il y a sans doute plus simple, mais je te propose ça :
            Crée un div avec display:'none' pour ne pas gêner et comme contenu la valeur initiale de ta tempo
            Dans playlist(), récupère dynamiquement le contenu de cette tempo (getElementById) et utilise-le pour relancer ton setInterval
            Modifie dynamiquement le contenu de ce div avec jQuery
            0
            1. Bonjour,

              Je pense avoir trouvé une idée

              Pour rappel, j'ai simplement une fonction "PlayList", qui charge un fichier PHP (le fichier php contient les requetes .....)
              Ensuite, j'ai une fonction Setinterval pour le refresh de ma fonction Playlist

              Maintenant ca se complique. Dans la fonction Playlist, j'ai décidé d'aller rechercher (dans un fichier PHP), la valeur de mon EFFET
              Dans ce contexte ci :
              La valeur de (var effet1) = fadeIn(3000);
              Je suis sur et certain de cette valeur

              Le problème c'est que dans la ligne de code Jquery :
              $("#workframe").load('content.php').hide().effet1.delay(10000).fadeOut(3000);

              Je ne sais pas comment écrire la valeur de effet1 ....
              Pour le moment, ca ne fonctionne pas .....
              En fait je ne sais pas comment écrire du javascript dans une ligne Jquery

              Merci d'avance !!!

              function playlist(){
              var xhr=null;
              if (window.XMLHttpRequest) {
              xhr = new XMLHttpRequest();
              }
              else if (window.ActiveXObject)
              {
              xhr = new ActiveXObject("Microsoft.XMLHTTP");
              }
              //on appelle le fichier reponse.txt
              xhr.open("GET", "contenu/cache.php", false);
              xhr.send(null);
              var effet1 = xhr.responseText + "(3000)";
              //
              $("#workframe").load('content.php').hide().effet1.delay(10000).fadeOut(3000);
              }
              setInterval('playlist()', 16000);
              0