03-07-2008, 11:04 PM
@tiFred
sauf que...
new Ajax.PeriodicalUpdater('monDiv', 'test_update.php', {method: 'get', frequency: 10 } );
ne peut pas marcher
la fonction que tu utilises se résume à :
met dans la balise "monDiv" le résultat du fichier "test_update.php"
or ton fichier test_update.php génére une page entière, pas un bout de code html. c'est comme si tu écrivais une page avec
<html><body>blablabla<html><body>blablabla</body></html></body></html>
essaie de créer un deuxieme fichier php (ex toto.php)
avec dedans un simple echo "coucou"
new Ajax.PeriodicalUpdater('monDiv', 'toto.php', {method: 'get', frequency: 10 } );
normalement tu devrais voir apparaitre coucou dans ta page (maintenant je n ai pas vérifié la syntaxe, juste le soucis que je vois est la compréhension de la fonction periodicalupdater)
@kassak
soit tu veux faire autant d'appel ajax (client serveur) qu'il y a et tu es tout près, c'est juste un appel de fonction avec.... deux paramètres (le nom du fichier et l'id du div) je te laisse chercher ;=)
soit tu veux faire un seul appel ajax pour alimenter tous les div d'un coup
dans ce cas tu dois choisir comment faire communiquer le serveur et le client
en xml avec le premier niveau de balise qui t indiquera à quel div est attribué le contenu qui va suivre
en json, avec le meme principe
en fichier "maison" avec un séparateur que tu identifies clairement
tout dépend de tes connaissances pour naviguer dans l'information retour de la simple chaine texte à de l'interprétation xml (j'en reviens de l'interprétation xml pour un jeu php, c'est bien en théorie mais pas forcément le plus simple)
pour aller au plus simple à comprendre
supposons que tu veuilles alimenter deux div différents avec du simple texte genre heure minute
un div pour l'heure
un div pour les minutes
tu peux générer un echo dans ton fichier appelé qui génère, en texte un simple
12#26
(12 heures 26 quoi)
du coté client ton req = obj.responseText; contiendra 12#26
de la tu découpes ta chaine et tu obtiens 12 pour l'heure et 26 pour les minutes
te reste plus qu'a remplir chaque div avec les valeurs
document.getElementById("heure").innerHTML = reqHeure;
document.getElementById("minute").innerHTML = reqMinute;
c'est le cas simple, c'est à dire tu sais exactement ce qui est fourni dans le fichier, qui est à quelle place, quel est le séparateur, etc...
utiliser xml , json ou autre est là peu utile à mon sens. Par contre, là où cela prend toute sa force, c'est quand ce n'est pas le client javascript qui décide à l'avance quelles informations vont lui être remontées par le serveur
supposons qu'il y ait 8 champs qui peuvent être modifié par une requête ajax (donc ton client javascript doit être capable de modifier ces 8 champs) mais que pour optimiser, tu testes côté serveur et tu ne fournis que les informations des 2 champs qui ont changé (pour une opération donnée, pour une autre, peut être que trois champs auraient été à modifier). Ton fichier de retour n'aura pas 8 données mais seulement 2, il est inutile d encombrer la bande passante avec 6 données qui existent déjà sur le poste du client
la force de xml/json c'est de te permettre en suivant une norme d'interpréter ce retour, mais ceci est une autre histoire
sauf que...
new Ajax.PeriodicalUpdater('monDiv', 'test_update.php', {method: 'get', frequency: 10 } );
ne peut pas marcher
la fonction que tu utilises se résume à :
met dans la balise "monDiv" le résultat du fichier "test_update.php"
or ton fichier test_update.php génére une page entière, pas un bout de code html. c'est comme si tu écrivais une page avec
<html><body>blablabla<html><body>blablabla</body></html></body></html>
essaie de créer un deuxieme fichier php (ex toto.php)
avec dedans un simple echo "coucou"
new Ajax.PeriodicalUpdater('monDiv', 'toto.php', {method: 'get', frequency: 10 } );
normalement tu devrais voir apparaitre coucou dans ta page (maintenant je n ai pas vérifié la syntaxe, juste le soucis que je vois est la compréhension de la fonction periodicalupdater)
@kassak
soit tu veux faire autant d'appel ajax (client serveur) qu'il y a et tu es tout près, c'est juste un appel de fonction avec.... deux paramètres (le nom du fichier et l'id du div) je te laisse chercher ;=)
soit tu veux faire un seul appel ajax pour alimenter tous les div d'un coup
dans ce cas tu dois choisir comment faire communiquer le serveur et le client
en xml avec le premier niveau de balise qui t indiquera à quel div est attribué le contenu qui va suivre
en json, avec le meme principe
en fichier "maison" avec un séparateur que tu identifies clairement
tout dépend de tes connaissances pour naviguer dans l'information retour de la simple chaine texte à de l'interprétation xml (j'en reviens de l'interprétation xml pour un jeu php, c'est bien en théorie mais pas forcément le plus simple)
pour aller au plus simple à comprendre
supposons que tu veuilles alimenter deux div différents avec du simple texte genre heure minute
un div pour l'heure
un div pour les minutes
tu peux générer un echo dans ton fichier appelé qui génère, en texte un simple
12#26
(12 heures 26 quoi)
du coté client ton req = obj.responseText; contiendra 12#26
de la tu découpes ta chaine et tu obtiens 12 pour l'heure et 26 pour les minutes
te reste plus qu'a remplir chaque div avec les valeurs
document.getElementById("heure").innerHTML = reqHeure;
document.getElementById("minute").innerHTML = reqMinute;
c'est le cas simple, c'est à dire tu sais exactement ce qui est fourni dans le fichier, qui est à quelle place, quel est le séparateur, etc...
utiliser xml , json ou autre est là peu utile à mon sens. Par contre, là où cela prend toute sa force, c'est quand ce n'est pas le client javascript qui décide à l'avance quelles informations vont lui être remontées par le serveur
supposons qu'il y ait 8 champs qui peuvent être modifié par une requête ajax (donc ton client javascript doit être capable de modifier ces 8 champs) mais que pour optimiser, tu testes côté serveur et tu ne fournis que les informations des 2 champs qui ont changé (pour une opération donnée, pour une autre, peut être que trois champs auraient été à modifier). Ton fichier de retour n'aura pas 8 données mais seulement 2, il est inutile d encombrer la bande passante avec 6 données qui existent déjà sur le poste du client
la force de xml/json c'est de te permettre en suivant une norme d'interpréter ce retour, mais ceci est une autre histoire