Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Rapport de mini-projet
Introduction............................................................................................................................3 1 La technologie AJAX.......................................................................................................3 1.1 Historique..................................................................................................................3 1.2 Les avantages de la technologie Ajax.........................................................................3 1.3 Principe de fonctionnement .......................................................................................4 2 Exemples de sites utilisants AJAX ...................................................................................6 1.1 Google Suggest..........................................................................................................6 1.2 Google Calendar........................................................................................................6 1.3 Google Maps .............................................................................................................7 3 Exemple d'application...8 3.1 Objet XMLHttpRequest.............................................................................................8 3.2 fonction d'initialisation ..............................................................................................8 3.3 Dtection de changement...........................................................................................9 3.4 Apell au serveur.......................................................................................................10 3.5 Traitement du document Xml ..................................................................................10 3.6 Cration automatique d'une liste de suggestions lisible sur la page Web...................11 3.7 Ct serveur ............................................................................................................11 Conclusion12 Rfrences bibliographiques .................................................................................................13
Introduction
AJAX Asyncron Javascript And Xml est une nouvelle technique pour crer les pages Web dynamiques. Cest une nouvelle faon de traiter les donnes dans les pages web. Cette mthode rend possible la mise jour des parties d'une page sans la charger en entier. Ce qui permet de gagner du temps lors de chargement et avoir des rponses quasiinstantanment.
1 La technologie AJAX
1.1 Historique
Le terme Ajax a t invent en 2005 par Google. Juste aprs cette invention, beaucoup dapplications qui utilisent cette technique ont t cres. Aujourdhui, en moins dune anne, Ajax est devenue le grand centre dintrt des dveloppeurs Web. Le 01 fvrier 2006. IMB a lanc linitiative Open Ajax qui regroupe aujourdhui BEA, Borland, Google, Yahoo!, Eclipse, Novell, Mozilla, Oracle, Zend Lobjectif est de garder la compatibilit de lensemble des programmes cre par les dveloppeurs avec les divers navigateurs et serveurs.
jour dynamiquement la page Web, tout ceci sans signaler lutilisateur quune nouvelle requte a t envoy. Dans le schma suivant, on voit que pour modifier un seul champ dans le cas classique (figure 3). Les donnes changes entre le serveur et la machine client contiennent tous les champs de ce formulaire. Par contre dans le cas dune page Web qui utilise Ajax (figure 4), grce lobjet XMLHttpRequest, lchange de donnes sest limit au champ modifi sous format Xml.
figure 5 : Google Suggest Ds que nous tapons la premire lettre de la recherche, Google nous propose une liste de mots recherchs frquemment sans recharger une autre page Web. Or pour charger sur le navigateur toute la liste des mots existant dans la base de donnes Google, il faut trs longtemps. Ajax apporte la solution, le navigateur cherche seulement les donnes ncessaires, dans notre cas (figure 5), les donnes transmises sont seulement les trois mots ensica, ensicaen, ensica toulouse ce qui donne une rponse quasi-instantane. Nous allons donner beaucoup de dtail dans notre petite application (page 8).
figure 6 : Google Calendar Derrire ce glissement se cache la technique Ajax qui met jour la base de donnes de faon permanente et transparente. La page devient beaucoup plus dynamique et ragit de manire instantane avec lutilisateur.
figure 7 : Google Maps Lorsque nous utilisons Google Maps (figure 7), nous avons limpression que le dbit de connexion est trs lev cause de la rapidit de la rponse lors dun scroll. Cette rapidit est due au fait que la technique Ajax continue charger les images voisines pendant la navigation. Donc lors dun scroll, les images voisines sont dj charges, ce qui donne une rponse instantane.
3 Exemple dapplication.
Pour illustrer la technologie Ajax, nous considrons un champ de formulaire dans lequel on saisit les premires lettres dun mot et lordinateur affiche au fur et mesure de la saisie au plus un certain nombre de mots commenant par le mme prfixe, ici, nous choisissons au plus 10 mots comme propose Google Suggest (Page 6). Attention, nous pouvons le raliser uniquement en javascript sans Ajax. Sauf quen javascript, le client doit charger tous les mots ce qui pourrait surcharger la bande passante et ralentir la rponse. Alors quavec Ajax, le client effectue des requtes vers le serveur qui lui envoie seulement les donnes demandes.
_formulaire _champTexte
_bouton
function init(form,champ,submit){ _formulaire=form; // initialisation des balises _champTexte=champ; _bouton=submit; _champTexte.autocomplete="off"; // Creation d'une liste vide creeL(); _champTexteActuel=_champTexte.value; _champTexteAncien=_champTexteActuel; // Premier dclenchement de la fonction dans 200 millisecondes setTimeout("detectChangement()",200) }
Cette fonction est lie l'vnement window.onload de notre page html. Elle sera complte au fur et mesure par des besoins supplmentaires d'initialisation que nous rencontrerons tout au long de cet article.
var _champTexteAncien=""; // valeur prcdente du champ texte var _champTexteActuel=""; // valeur actuelle du champ texte var _cache=new Object(); // mcanisme de cache des requetes var _vide=new Array(); // tourne en permanence pour suggerer suite un changement du champ texte function detectChangement(){ _champTexteActuel = _champTexte.value; if(_champTexteAncien!=_champTexteActuel){ if(_champTexteActuel==""){ metsEnPage("",_vide) } else{ call(_champTexteActuel) } _champTexte.focus() //donne le focus champTexte } _champTexteAncien=_champTexteActuel;
_resultCache est un objet qui nous permettra de constituer un cache des requtes, pour viter de les renvoyer systmatiquement (trs utile, par exemple en cas de backspace). La fonction metsEnPage mettra en place dans la page nos suggestions, et la fonction call excutera une requte, via l'objet xmlHttpRequest, vers le serveur de donnes.
Cette fonction utilise l'objet xmlHttpRequest en mode asynchrone (le premier A de Ajax), comme le montre le troisime paramtre de la mthode open() qui vaut true. Lorsque la rponse du serveur revient, cela signifie que la requte sera termine (readyState==4), la fonction traiteXml transformera notre document XML en une liste de suggestions (Array de string) et la mthode metsEnPage sera dclenche, avec comme argument le texte dans le champ utilisateur et les possibilits de compltion. La mthode cache permet de garder les demandes prcdentes faites au serveur.
10
function traiteXml(xmlDoc) { var options = xmlDoc.getElementsByTagName('option'); //tableau contenant la balise 'option' et son contenu var optionsL = new Array(); for (var i=0; i < options.length; ++i) { optionsL.push(options[i].firstChild.data); } return optionsL;//tableau contenant tous les mots entre la balise 'option' du fichier XML }
3.6 Cration automatique dune liste de suggestions lisibles sur la page web.
La dernire fonction que nous avons mettre en oeuvre est la fonction metsEnPage, qui va mettre les suggestions en place. Ces suggestions sont mises en place dans une liste de suggestions (liste puce UL), cre au moment de l'initialisation de notre script.
function creeL(){ _completeL=document.createElement("UL"); _completeL.id="completeDiv"; document.body.appendChild(_completeL); }
3.7 Ct serveur
Notre page HTML est maintenant capable de dialoguer avec notre serveur qui est ici rsum une simple page PHP, et d'intgrer dans la page le retour de ce serveur.
<?php header('Content-Type: text/xml;charset=utf-8'); echo(utf8_encode("<?xml version='1.0' encoding='UTF-8' ?><options>")); if (isset($_GET['debut'])) { $debut = utf8_decode($_GET['debut']); } else { $debut = ""; } $debut = strtolower($debut); $liste = array(login); function generateOptions($debut,$liste) { $MAX_RETURN = 10; $i = 0; foreach ($liste as $element) { if ($i<$MAX_RETURN && substr($element, 0, strlen($debut))==$debut) { echo(utf8_encode("<option>".$element."</option>")); $i++; } } } generateOptions($debut,$liste); echo("</options>"); ?>
11
La liste de mots utilise (dans la variable $liste, qui n'a pas t recopie ici) est la liste des noms dutilisateur de lENSICAEN. Le nombre maximum de possibilit retourn par cette page est 10. Le seul point particulier de cette page php est de bien noter que, de faon gnrale, il convient d'envoyer la rponse XML en UTF-8 bien propre, pour viter d'ventuels problmes d'encodage par la suite (accents qui disparaissent, document XML non reconnu...).
Conclusion
Cette technologie Ajax qui utilise en principe xmlHttpRequest va nous permettre de raliser des interfaces plus dynamiques, intuitives et plus rapide puisque seules les donnes modifier sont traites, nul besoin de recharger toutes la page Web puis de contrler en temps rel les formulaires en interrogeant le serveur. Mais il ne faut pas perdre de vue qu'environ 10% des internautes ont le javascript activ et seuls les navigateurs rcents supportant le xmlHttpRequest peuvent interprter correctement une page contenant de l'Ajax. En ce qui concerne l'utilisation synchrone ou asynchrone, si vous utilisez en synchrone, vous risquez de vous retrouver avec une page bloque qui attendra la rponse du serveur. Aujourd'hui, tout le monde veut faire du Ajax mais il faut en faire que si cela peut apporter un plus votre page Web.
12
Rfrences bibliographiques
13