div qui se recharge toutes les x seconde(s)

Mammouth du PHP | 959 Messages

10 août 2007, 03:14

j'ai envi de flooder "SA MARCHE !!!!!!!!!!!!" mais comme PHPfrance on limité à 1 message d'affiler, je peut pas :cry: :lol:

MERCI !!!!!!!!!!!!!!!!!!

sa marche nickel !
Merci pour toutes tes indications, sa m'a permis d'apprendre quelques notions en javascript :P

Encore Merci :)

Voici le code Officiel :

Code : Tout sélectionner

entre <head> et </head> <script type="text/javascript"> /* Merci à PHPfrance pour m'avoir aidé autant à établir ce script et plus particulièrement à un membre qui devrait devenir modo :P */ 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; setInterval('reloadtitle()',1000); // la fonction va s'actualiser toute les secondes.... } }; //on appelle le fichier currentsong.xsl xhttpRequest.open('GET','currentsong.xsl', true); xhttpRequest.send(null); } </script> rajouter onLoad="reloadtitle()" dans la balise <body> entre <body> et </body> <div id="title">Chargement du titre en cours...<noscript> Merci d'activé JavaScript sur votre navigateur !</noscript></div>
Voilà, merci, CE SUJET EST MAINTENANT UN GROS SUJET RéSOLU !

PS: j'ai mis un <noscript>, pour que le visiteur active javascript, sinon, il peut pas voir les titres....

EDIT : Oh ! chui devenu Eléphanteau :wink: :lol: :D

ViPHP
ViPHP | 5924 Messages

10 août 2007, 13:30

Bon, maintenant, c'est parti pour les conseils :)

Tout d'abord, sors le maximum de ta fonction, notamment :

Code : Tout sélectionner

var xhttpRequest=null; if (window.XMLHttpRequest) { xhttpRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhttpRequest = new ActiveXObject('Microsoft.XMLHTTP'); }
c'est inutile de reconstruire l'objet xhr à chaque fois, tu peux le construire une fois pour toute.

Code : Tout sélectionner

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; setInterval('reloadtitle()',1000); // la fonction va s'actualiser toute les secondes.... } };
Pareil, tu peux ne définir cette fonction qu'une seule fois hors de ta fonction reloadtitle().


Autre chose, ici, ta variable title ne sert à rien :

Code : Tout sélectionner

var title = xhttpRequest.responseText document.getElementById('title').innerHTML = title;
Tu peux faire l'assignation directe :

Code : Tout sélectionner

document.getElementById('title').innerHTML = xhttpRequest.responseText;
Sinon, tu utilises mal setInterval(). Cette fonction ne doit être utilisée qu'une seule fois. Tel que tu l'utilises, à chaque fois que tu l'appelles, tu écrases le précédent appel à la fonction (le résultat est le même mais c'est on ne peut plus sale). Ce que tu peux faire, c'est la mettre dans ton onLoad :

Code : Tout sélectionner

<body onLoad="reloadtitle();setInterval('reloadtitle', 1000);">
De cette manière, tu ne l'utilises qu'une fois, et tu t'assures que tu ne chargeras pas le titre avant que la page ne soit chargée (sans quoi tu pourrais avoir des erreurs).

Une fois que tu auras fait tout cela, ton code sera un peu plus propre.

/* Merci à PHPfrance pour m'avoir aidé autant à établir ce script et plus particulièrement à un membre qui devrait devenir modo :P */
Ce n'est pas à moi qu'il faut le dire, ça :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 août 2007, 14:08

/* Merci à PHPfrance pour m'avoir aidé autant à établir ce script et plus particulièrement à un membre qui devrait devenir modo :P */
Il faudrait surtout qu'il devienne ViPHP avant ... ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 959 Messages

11 août 2007, 18:42

^^ lol
il va pas tardé :o :wink: :D