Jquery, Ajax, SetInterval, PHP

Fermé
pilten Messages postés 41 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 19 octobre 2012 - 22 sept. 2011 à 11:52
pilten Messages postés 41 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 19 octobre 2012 - 27 sept. 2011 à 12:31
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




A voir également:

6 réponses

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
pilten Messages postés 41 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 19 octobre 2012
22 sept. 2011 à 13:46
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
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
pilten Messages postés 41 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 19 octobre 2012
22 sept. 2011 à 14:08
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

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

Posez votre question
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
pilten Messages postés 41 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 19 octobre 2012
27 sept. 2011 à 12:31
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