Pour ce TP, vous allez réaliser deux petites applications Web qui communiqueront de manière asynchrone avec votre serveur Web. L'archive de départ est disponible ici.
Cette application dessine un tableau dont les cases changeront automatiquement de couleur, sans pour autant recharger la page. Dans la pratique, l'application demandera régulièrement à un script PHP de choisir une case et une couleur aléatoirement et la partie JavaScript changera la couleur de la case choisie.
disco.html
quasi vide qui contient principale un appel à la méthode dessinerDancefloor()
au chargement.ping.php
répond aux requêtes GET par des données au format JSON.js/dancefloor.js
contient juste la fonction dessinerDancefloor()
. Cette fonction écrit juste une table HTML dans la balise d'identifiant disco
.disco.html
pour vérifier si la table est bien dessinée (par inspection du code depuis le navigateur).js/dancefloor.js
, définissez une fonction JavaScript colorier(x, y, c)
qui met à c
la couleur de l'arrière-plan de la cellule d'identifiant x,y
.getCase()
. Cette fonction doit effectuer une requête GET
sur la page ping.php
en indiquant en paramètre la taille de votre tableau. Affichez le résultat de cette requête dans votre console. Testez et corrigez votre code jusqu'à ce que ping.php
retourne bien un code 200
et du texte contenant du JSON.getCase()
: Évaluez le message JSON de la réponse pour récupérer son contenu et le transmettre à colorier
. Testez getCase
depuis la console JavaScript.go()
. Cette méthode doit exécuter getCase()
toutes les 100ms. Testezgo()
pour exécuter dessinerDancefloor()
avant de programmer le timer. Modifiez la page HTML pour que celle-ci appelle la fonction go()
au chargement.Cette application permet de modifier le classement de super-héros. Le classement est modifié en temps réel sur votre navigateur et est sauvegardé simultanément sur le serveur dans votre session.
heroes.php
sera exécuté sur le serveur pour afficher le classement courant.change.php
réponds à requêtes POST. C'est ce script qui sauvegardera les changements dans le classement.js/top.js
sera à compléter.heroes.php
avec votre navigateur. Regardez le code HTML produit. On remarque que chaque ligne a un identifiant et que les images sont clickables. Dans la pratique, elles appellent une méthode JavaScript change(op, i)
qui prend en paramêtre le type de changement et le numéro de la ligne de classement.index.php
et la librairie associée pour comprendre son fonctionnement si besoin.js/top.js
codez la méthode swap(x,y)
. Cette méthode inverse les noms des supers héros qui sont aux lignes x
et y
.swap
dans la console JavaScript.On peut maintenant changer l'ordre du classement depuis la console mais l'ordre n'est sauvegardé nulle part: à charge chargement de la page, nous retrouvons l'ordre initial. Vous allez donc maintenant notifier le serveur de votre modification du classement avant de modifier de la table.
change(op,i)
. Cette fonction doit envoyer une requête POST à l'addresse change.php
avec comme paramètre:
dec
ou inc
) pour indiquer si vous voulez décrémenter ou incrémenter le classement d'un hérochange
. Avoir l'avoir appelé, si vous rechargez la page, le classement retourné par le serveur doit avoir été modifié.change
pour qu'elle modifie votre tableau en conséquence.Sur le premier exercice, il serait bien que plusieurs cases changent de couleurs simultanément.
Ensuite, il serait bien que l'affichage prenne tout l'écran:
Certains sont des héros, d'autres sont des super-héros. Séparons les torchons des serviettes.
html_heroes()
une troisième image clickable permettant de supprimer un hérodel(i)
permettant de supprimer le héro à la case i.change.php
, autorisez une nouvelle opération del
(une nouvelle valeur pour le parametre op
).
Cette opération permettra d'appeler votre fonction del
Jquery est une librairie simplifiant la programmation en Javascript. Elle propose notamment des fonctions de haut niveaux pour sélectionner et manipuler des éléments dans du HTML, des fonctions toutes prêtes pour faire des requêtes Ajax.
Pour cet exercice, vous allez pouvoir utiliser JQuery pour simplifier votre code Javascript pour l'exercice disco
colorier
getCase
.Maintenant, passez à JQuery pour l'exercice sur le classement des super-héros