div qui se recharge toutes les x seconde(s)

ViPHP
ViPHP | 5924 Messages

08 août 2007, 17:35

Bah il faut quelquechose pour te renvoyer l'information, tout langage serveur peut faire l'affaire, mais il en faut un. Comment tu récupères le titre quand tu affiches ta page ?

Mammouth du PHP | 959 Messages

09 août 2007, 16:47

le serveur récupère le titre du la musique grâce à se petit code xsl :

Code : Tout sélectionner

</xsl:if><xsl:value-of select="title" />
(quand on fais code source de la page, il est remplacé par le titre, il n'est pas visible ;) )
(et c'est donc cette partit placé dans une div que faut actualiser régulièrement ;) )

sinon, j'ai fais un page, qui s'appelle "currentsong.xsl" qui elle, renvoi juste le titre dans une page blanche...

je pense que l'on pourras s'en servir

PS : excusez moi pour mon petit retard, j'ai pas vu qu'il y avait 2 pages xD :P

ViPHP
ViPHP | 5924 Messages

09 août 2007, 16:57

le serveur récupère le titre du la musique grâce à se petit code xsl :

Code : Tout sélectionner

</xsl:if><xsl:value-of select="title" />
(quand on fais code source de la page, il est remplacé par le titre, il n'est pas visible ;) )
(et c'est donc cette partit placé dans une div que faut actualiser régulièrement ;) )

sinon, j'ai fais un page, qui s'appelle "currentsong.xsl" qui elle, renvoi juste le titre dans une page blanche...

je pense que l'on pourras s'en servir
Bizarre comme système.
Ce que tu peux faire, c'est ne pas utiliser le xsl quand tu génères la page, mais d'aller directement le chercher par AJAX à la génération, ce serait autrement plus propre. Et comme je t'ai déjà dit, si tu as une page qui renvoie le nom du titre en cours, tu fais une requète http dessus avec ton objet xhr. Là où dans le script que tu as récupéré, il va surement appeler un script php, toi, tu appeles ton fichier dans lequel se situe le titre en cours.
Et ensuite tu utilises ton_xhr.responseText pour extraire la réponse et window.(…).innerHTML ou innerText pour assigner cette valeur à ta div.
C'est clair ? (Pour les descriptifs, une petite recherche google te les donnera, avec doc xhttprequest et doc innerHTML).
PS : excusez moi pour mon petit retard, j'ai pas vu qu'il y avait 2 pages xD :P
Ce n'est pas grave. :)

Mammouth du PHP | 959 Messages

09 août 2007, 17:17

mouahahah

sa marche à moitier !

voiçi mon script :

Code : Tout sélectionner

<script type="text/javascript"> function reloadtitle() { xhttpRequest.open('GET', 'currentsong.xsl', true ); var title xhttpRequest.responseText document.getElementById('title').innerHTML = title; } </script>
voila, c'est déjà ça, il récupère le titre dans le currontsong.xsl, mais maintenant, reste à faire renouveller la fonction pour que le titre s'actualise tout seul...

d'autres indications pour ça please ! ^^ :D

EDIT: à non, ça marche pas :(

ViPHP
ViPHP | 5924 Messages

09 août 2007, 17:42

Non, ca ne peux pas marcher comme cela, il faut que tu assignes une fonction à onreadystatechange et que tu envoies la requète http avec send.
Comme ici : http://gael-donat.developpez.com/web/intro-ajax/#LII-B
Sauf que au lieu de faire :

Code : Tout sélectionner

xhr.onreadystatechange = function() { alert_ajax(xhr); };
Tu feras :

Code : Tout sélectionner

xhr.onreadystatechange = function() { if(xhr.readyState==4) { // C'est ici que tu dois récupérer le résultat de la requète. } };

Mammouth du PHP | 959 Messages

09 août 2007, 18:02

comme cela ?

Code : Tout sélectionner

<script type="text/javascript"> function reloadtitle() { var xhr=null; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } //on définit l'appel de la fonction au retour serveur xhr.onreadystatechange = function() { if(xhr.readyState==4) { // C'est ici que tu dois récupérer le résultat de la requète. var title xhttpRequest.responseText document.getElementById('title').innerHTML = title; } }; //on appelle le fichier currentsong.xsl xhr.open('GET', 'currentsong.xsl', true); xhr.send(null); } function alert_ajax(xhr) { alert(xhr.responseText); } </script>
nan, j'ai du me planter quelque part :roll: #-o

ViPHP
ViPHP | 5924 Messages

09 août 2007, 18:50

Ta fonction alert_ajax ne te sert à rien.
Sinon, tu as testé le script pour voir ?

Mammouth du PHP | 959 Messages

09 août 2007, 19:01

ok, donc sa donne cela :

Code : Tout sélectionner

<script type="text/javascript"> function reloadtitle() { var xhr=null; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } //on définit l'appel de la fonction au retour serveur xhr.onreadystatechange = function() { if(xhr.readyState==4) { // C'est ici que tu dois récupérer le résultat de la requète. var title xhttpRequest.responseText document.getElementById('title').innerHTML = title; } }; //on appelle le fichier currentsong.xsl xhr.open('GET', 'currentsong.xsl', true); xhr.send(null); } </script>
Oui, j'ai tester, il n'y a pas de titre qui s'affiche, mais bizarrement, :
extrait de mon code de départ (code dans ouvert avec bloc-note):

Code : Tout sélectionner

<div id="title"></div>
et se que j'obtient avec le code exécuter :

Code : Tout sélectionner

<div id="title"/></td><td/></tr></table></div>
je ne sais pourquoi....
pourtant, mon fichier currentsong ne contient pas de table... mais le fichier dans le quel je veut mettre mon script oui...

EDIT : non c'est bon, erreur de ma part pour les tr et table dans le div....

ViPHP
ViPHP | 5924 Messages

09 août 2007, 19:55

Pour les erreurs, je vois une erreur de syntaxe, tu peux diagnostiquer ca sous Firefox ou Opera avec un débogueur intégré (regarde dans les menus si tu n'as pas une console javascript), ou sous Internet Explorer en l'activant dans les options avancées).
Sinon, il faut bien sur que tu éxécutes ta fonction quelquepart pour que ca marche, par exemple, dans ta balise body :
<body onLoad="reloadtitle()">

Mammouth du PHP | 959 Messages

09 août 2007, 20:29

oui, il y a 2 erreurs :
Image

et pour le onLoad, je l'avais déjà mis ;)


EDIT : 1ère erreur, le égal : corrigé, 2ème, je sais pas xD

EDIT 2: arf, maintenant, il me dit "xhttpRequest is not defined" est plus "reloadtitle is not defined" :roll:

ViPHP
ViPHP | 5924 Messages

09 août 2007, 20:59

Relis ton code, tu appelles ta variable xhr à l'initialisation, il ne peut pas reconnaître quand tu lui mets xhttprequest. Donne leur le même nom.

Mammouth du PHP | 959 Messages

09 août 2007, 21:20

voila, je viens de remplacer tous les "xhr" par "xhttprequest"

voila l'erreur maintenant :
Erreur : xhttpRequest is not defined
Ligne : 25

la ligne 25 :

Code : Tout sélectionner

var title = xhttpRequest.responseText
je pensé qui fallais un ";" à la fin de la ligne, mais non, sa le fais toujours :roll:

donc voila le code ... :

Code : Tout sélectionner

<script type="text/javascript"> function reloadtitle() { var xhttprequest=null; if (window.XMLHttpRequest) { xhttprequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhttprequest = new ActiveXObject('Microsoft.XMLHTTP'); } //on définit l'appel de la fonction au retour serveur xhttprequest.onreadystatechange = function() { if(xhttprequest.readyState==4) { // C'est ici que tu dois récupérer le résultat de la requète. var title = xhttpRequest.responseText document.getElementById('title').innerHTML = title; } }; //on appelle le fichier currentsong.xsl xhttprequest.open('GET','currentsong.xsl', true); xhttprequest.send(null); } </script>

ViPHP
ViPHP | 5924 Messages

10 août 2007, 00:11

La casse : xhttprequest et xhttpRequest, ce n'est pas la même chose.

Mammouth du PHP | 959 Messages

10 août 2007, 01:26

mouaih !!!!!
la titre s'affiche !

déjà, merci pour cette 1ère étape ^^


Plus d'info pour l'actualisation stp ^^

ViPHP
ViPHP | 5924 Messages

10 août 2007, 02:23

Bah c'est avec la fonction setInterval. Je ne t'en dis pas plus parce que c'est vraiment simple à utiliser. Une recherche google t'en dira plus à ce sujet :)