JeuWeb - Crée ton jeu par navigateur
[Ajax] Quelle méthode de récupération opter ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Ajax] Quelle méthode de récupération opter ? (/showthread.php?tid=3218)



[Ajax] Quelle méthode de récupération opter ? - Meardon - 28-10-2008

Bonjour,

J'utilise Ajax depuis peu, et même si je maîtrise déjà au niveau programmation, j'hésite encore un peu sur la manière d'accéder aux données.

Dans mon cas, je souhaite afficher une barre de description lorsqu'on clique sur un élément. J'utilise Ajax pour obtenir dynamiquement les éléments. Il faut aussi savoir que la barre ne contiendra pas forcément le même type d'informations et d'actions selon l'élément en question (bâtiment, équipement, etc...). Je me retrouve alors avec deux fonctionnements possibles :
- La barre se trouve dans un fichier à part, est construite dynamiquement par le PHP, et l'appel Ajax charge à chaque fois la barre dans son intégralité sous forme de données HTML (solution la plus simple).
- Le squelette de la barre (design) est chargé dès le départ et invisible. L'appel Ajax retourne des données XML (ou plutôt Json ^^) qui seront traitées par Javascript. La barre est alors complétée par manipulation DOM.

Sachant également que les données de la barre pourront être amenées à être modifiées dynamiquement même après que la barre est était affichée/chargée. Quelle solution vous paraît-elle la plus appropriée ?


RE: [Ajax] Quelle méthode de récupération opter ? - Sephi-Chan - 28-10-2008

La solution de la flexibilité, et donc de la récupération d'informations formatées en XML ou JSON me semble plus sympa, ça te permet de n'avoir qu'à changer ta partie cliente si tu changes le formatage des informations, etc.


Sephi-Chan


RE: [Ajax] Quelle méthode de récupération opter ? - Ter Rowan - 28-10-2008

j ai un peu le même principe à gérer et j'applique deux solutions selon les cas :


1er cas : tu cliques sur un élément de la page, un menu contextuel apparaît avec les options qui vont bien (et qui peuvent donc évoluer dans le temps).

j'ai crée dans la page un menu contenant diverses options, qui fonction des retours ajax s'affichent ou non (display = none) Eventuellement je rajoute des options si elles sont retournées par ajax mais pas dans la page

2eme cas : tu cliques sur un élément de la page, des informations statiques apparaissent (ie, impossible de modifier le contenu)

dans ce cadre, c'est javascript qui gère avec l'algo suivant

1) événement = clic élément
2) si élément cliqué possède déja le "div" concernant les informations statiques, l'afficher
3) si élément cliqué ne possède pas le "div", appel ajax
3.1) retour ajax, génération du div et de son contenu
3.2) affichage du "div"


RE: [Ajax] Quelle méthode de récupération opter ? - Meardon - 28-10-2008

Merci pour vos réponses, je pense donc que je vais rester sur la 2ème solution, même si celle-ci semble plus dur à mettre en oeuvre...

Pour être sûr, une autre considération :
Solution 1 : Structuration faite côté serveur, transmission des données en HTML brut
Solution 2 : Structuration faite côté client, transmission des données en Json
Niveau performances, c'est toujours la solution 2 qui l'emporte ?


RE: [Ajax] Quelle méthode de récupération opter ? - Sephi-Chan - 28-10-2008

La solution deux reste meilleure en tout point, puisqu'elle limite la quantité d'informations échangées aux données seules. Elle a également l'avantage de te permettre de ne changer que le gabarit de ton infobulle si tu veux changer la mise en forme.


Sephi-Chan


RE: [Ajax] Quelle méthode de récupération opter ? - Ter Rowan - 28-10-2008

oui je partage l'avis de Sephi, il ne faut pas envoyer le code HTML brut à mon sens mais uniquement des informations.

Mes deux solutions utilisent ce principe (le serveur n'envoie que des données, javascript interprète ces données). La différence entre les deux cas sont dans le "stockage" définitif des informations dans la page du client (cas 2) ou un appel systématique à chaque demande


PS de plus la solution 2 que tu décris peut être en JSON ou en XML

ne confond pas XML et HTML Wink