AJAX est l'acronyme d'asynchronous JavaScript And XML, autrement dit JavaScript Et XML Asynchrones.



Documents pareils
Le stockage local de données en HTML5

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Programmation Web. Madalina Croitoru IUT Montpellier

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

McAfee Security-as-a-Service

Formation : WEbMaster

DOM - Document Object Model

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Gérer une forte charge avec ez Publish Obtenir la meilleure réactivité de publication. Solutions natives ez. Solution spécifique.

Petite définition : Présentation :

Architectures web/bases de données

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Installation locale de JOOMLA SEPIA

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

Livre Blanc WebSphere Transcoding Publisher

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Les calques supplémentaires. avec Magix Designer 10 et autres versions

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

TeamViewer 9 Manuel Management Console

Edutab. gestion centralisée de tablettes Android

Travail collaboratif. Glossaire

HTML5, CSS3 et JavaScript Développez vos sites pour les terminaux mobiles

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

Sage CRM. 7.2 Guide de Portail Client

Administration du site (Back Office)

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Vous rappelez-vous des premiers sites Internet auxquels vous avez accédé?

Le courrier électronique

OASIS Date de publication

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Séquence de découverte de SparkAngels Logiciel d entraide numérique

Premiers pas sur e-lyco

LEA.C5. Développement de sites Web transactionnels

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Sql Server 2005 Reporting Services

Fiche méthodologique Rédiger un cahier des charges

Google Tag Manager. «Vous ne verrez plus l'analytics de la même manière» par Ronan CHARDONNEAU

Sauvegarde des données du scribe sur disque USB

Gestion des utilisateurs : Active Directory

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Programmation Internet Cours 4

Module SMS pour Microsoft Outlook MD et Outlook MD Express. Guide d'aide. Guide d'aide du module SMS de Rogers Page 1 sur 40 Tous droits réservés

Tutoriel : Comment installer une compte (une adresse ) sur un logiciel de messagerie (ou client messagerie)?

Application Web et J2EE

DirXML License Auditing Tool version Guide de l'utilisateur

Mysql. Les requêtes préparées Prepared statements

Base de Connaissances

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

GUIDE UTILISATEUR DHL FREIGHT E-BILLING LA FACTURATION ELECTRONIQUE PAR DHL FREIGHT

Architectures en couches pour applications web Rappel : Architecture en couches

Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Création d'un questionnaire (sondage)

Utiliser Access ou Excel pour gérer vos données

Création de site Internet avec Jimdo

RAPPORT DE CONCEPTION UML :

GUIDE DE DÉMARRAGE RAPIDE

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

CONNECTEUR PRESTASHOP VTIGER CRM

Programmation Web. Introduction

Cours admin 200x serveur : DNS et Netbios

Devenez un véritable développeur web en 3 mois!

Télécom Nancy Année

Infrastructure - Capacity planning. Document FAQ. Infrastructure - Capacity planning. Page: 1 / 7 Dernière mise à jour: 16/04/14 16:09

Linux sécurité des réseaux

BIND : installer un serveur DNS

Business Intelligence avec SQL Server 2012

Voici quelques astuces pour exécuter des tâches courantes. Série Mise en route

1. Introduction Création d'une requête...2

ORACLE TUNING PACK 11G

Guide d'initiation aux. certificats SSL. Faire le bon choix parmi les options qui s'offrent à vous en matière de sécurité en ligne. Document technique

Manuel de SQUIRRELMAIL à l'usage des étudiants.

Microsoft Application Center Test

Business & High Technology

Google Tag Manager. Optimisez le tracking de votre site web. Google Tag Manager. Google Tag Manager. Optimisez le tracking de votre site web 26,50

1. Installation du Module

Java 7 Les fondamentaux du langage Java

Importation des données dans Open Office Base

Ajax, RIA et HTML Prise en charge d Ajax

Application de lecture de carte SESAM-Vitale Jeebop

PHPWEBSITE -Tutoriel image

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Didacticiel de mise à jour Web

Compte Rendu d intégration d application

A. Sécuriser les informations sensibles contre la disparition

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

MEDIAplus elearning. version 6.6

Formation à l'administration de votre site E-commerce Page 1 sur 15

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Bind, le serveur de noms sous Linux

Transcription:

Le concept d'ajax Introduction AJAX est l'acronyme d'asynchronous JavaScript And XML, autrement dit JavaScript Et XML Asynchrones. AJAX n'est ni une technologie ni un langage de programmation ; AJAX est un concept de programmation Web reposant sur plusieurs technologies comme le JavaScript et le XML d'où le nom AJAX. A l'heure actuelle, le XML tend à être délaissé au profit du JSON, ce qui explique que certains puristes utilisent l'acronyme AJAJ dont la prononciation laisse plutôt à désirer. L'idée même d'ajax est de faire communiquer une page Web avec un serveur Web sans occasionner le rechargement de la page. C'est la raison pour laquelle JavaScript est utilisé, car c'est lui qui va se charger d'établir la connexion entre la page Web et le serveur. Contrairement à ce qui est souvent dit, le principe de fonctionnement d'ajax a toujours existé, et ce par le biais de certaines astuces JavaScript, comme l'ajout d'un élément <script /> après le chargement de la page. Mais il a fallu attendre l'arrivée de l'objet XMLHttpRequest pour que l'utilisation de l'ajax se démocratise. L'objet XMLHttpRequest est un objet natif JavaScript, développé à l'origine en tant qu'activex dans Internet Explorer, qui facilite grandement la communication JavaScript Serveur. Afin de bien introduire le principe de l'ajax, voici une comparaison du fonctionnement d'un site Web dit traditionnel et d'une application Web mettant en œuvre AJAX. Page Web et Application Web Différencions tout d'abord deux côtés applicatifs : le navigateur, à gauche, et le serveur, à droite. A ce petit schéma on va ajouter un pendule qui balance entre les deux côtés. Site Web traditionnel Tout d'abord le navigateur envoie une requête via une URL au serveur. Le serveur répond en renvoyant au navigateur le code HTML de la page ainsi que tout ce qui lui est associé comme les scripts JavaScript, les images ou les éventuels médias et autres objets embarqués donc la réponse du serveur est beaucoup plus volumineuse que la requête. Le navigateur affiche la page et l'utilisateur peut la parcourir quelques instants avant de cliquer sur un lien hypertexte qui enverra une nouvelle requête au serveur qui lui-même renverra le HTML correspondant... et ainsi de suite. 1

D'un point de vue purement pratique, c'est assez aberrant comme principe car c'est extrêmement inefficace et couteux puisque le serveur va à chaque fois renvoyer tout, ce qui prend du temps et ce qui occasionne une charge pour le serveur. Ce principe de fonctionnement montre que le navigateur n'intervient pas dans le processus si ce n'est que pour afficher la page. Le gros du travail se fait du côté du serveur. Le pendule balance donc du côté du serveur. Application AJAX Voyons ce même schéma du point de vue d'ajax. Quand on utilise le concept d'ajax dans une page Web, on parle d'application Web (ou application AJAX). La première requête est la même ça on ne sait rien y faire. La différence va résider dans le fait que quand l'utilisateur cliquera sur un lien ou un autre élément cliquable la page ne se rechargera pas et le navigateur enverra une requête au serveur, lequel renverra les données demandées dans un format léger comme le format JSON. Dans ce cas, le serveur n'a renvoyé qu'un minimum de données ce qui est beaucoup plus léger et donc plus rapide. Le navigateur, par le biais de JavaScript, peut alors mettre à jour une petite partie de la page avec les données reçues du serveur. 2

Dans ce cas, le pendule est au centre. Le serveur et le navigateur travaillent pour proposer une solution optimale. C'est l'exemple parfait de l'équilibre d'une application AJAX Il faut cependant faire attention à ne pas mésinterpréter ce schéma, car il ne s'agit en aucun cas de remplacer la page entière, ce qui reviendrait à recharger la page. Si on se réfère au pendule, il va balancer du côté du serveur, ce qui montre qu'il y a un problème, et dans ce cas AJAX n'est pas utilisé correctement. C'est donc la raison pour laquelle il est totalement absurde de créer un site Web entièrement en AJAX. Ce n'est pas possible car AJAX ne doit jamais se subtiliser à la méthode traditionnelle. AJAX doit être utilisé pour charger/modifier de petites parties d'une page. Un exemple peut être Facebook ; sur Facebook il y a la possibilité d'afficher les amis d'une personne sans recharger la page. Quand vous cliquez sur le lien Afficher les amis, une requête est envoyée au serveur, lequel renvoie la liste des amis de la personne dont vous souhaitez connaitre les amis. Cette liste est alors affichée dynamiquement via JavaScript. Pas de rechargement de page, juste une requête rapide quasi instantanée et un confort de navigation accru. Dialoguer avec le serveur Si le pendule est bien au centre, l'application est en équilibre et le dialogue entre le navigateur et le serveur se passe bien. Mais comment dialoguer? Ou plutôt, en quel format parler? Le navigateur et le serveur ne peuvent se parler que via un format de type texte brut. Le navigateur peut donc demander au serveur "Liste amis Alyx" et le serveur renverra la liste des amis d'alyx. C'est assez nul comme format : si la question est claire, la liste des amis que renverra le serveur le sera nettement moins et c'est ici qu'il va falloir opter pour le format adéquat. Plusieurs formats sont possibles : Texte simple ; HTML ; XML ; 3

JSON. Le texte simple Comme on vient de le voir, ce format n'est pas du tout adapté s'il s'agit de recevoir des données devant êtres "formatées" ou classées comme une liste d'amis. Le HTML Le HTML est intéressant car il suffira de l'insérer directement dans la page avec la propriété innerhtml. C'est rapide. Cela dit le HTML est verbeux et peut se révéler assez lourd quand il s'agit d'un grand volume de données. <ul> </ul> <li><span title="a4242">gordon</span></li> <li><span title="j3781">barney</span></li> <li><span title="j7638">eli</span></li> <li><span title="o7836">chell</span></li> <li><span title="e5831">odessa</span></li> Le XML Avec certains objets AJAX, comme XMLHttpRequest il est possible de récupérer du texte sous forme de XML et de l'interpréter comme tel, ce qui permet de manipuler les données avec les fonctions DOM. Ca peut être intéressant mais XML souffre du même problème que le HTML : il est verbeux. De plus le traitement via DOM peut se révéler assez lent s'il s'agit d'un grand volume de données et suivant le navigateur utilisé par le client. <friends> <f name="gordon" id="a4242" /> <f name="barney" id="j3781" /> <f name="eli" id="j7638" /> <f name="chell" id="o7836" /> <f name="odessa" id="e5831" /> </friends> Le JSON Reste le JSON. Le JSON est une manière de structurer l'information en utilisant la syntaxe objet de JavaScript des objets et des tableaux. JSON est très léger, car non-verbeux mais nécessite d'être évalué par le compilateur JavaScript pour pouvoir être utilisé comme un objet. L'évaluation se fait via eval pour les navigateurs obsolètes ou via la méthode parse de l'objet natif JSON. L'évaluation est souvent décriée car peut se révéler dangereuse, mais dans la mesure où vous connaissez la source des données à évaluer il n'y a pas de danger. [ ] { "name":"gordon", "id":"a4242" }, { "name":"barney", "id":"j3781" }, { "name":"eli", "id":"j7638" }, { "name":"chell", "id":"o7836" }, { "name":"odessa", "id":"e5831" } 4

Le JSON est donc le format travaillant de paire avec AJAX quand il s'agit de recevoir des données classées et structurées. Les autres formats peuvent bien évidemment servir et se révéler intéressants dans certains cas, mais d'une façon générale les grandes pointures du JavaScript, comme Douglas Crockford incitent à utiliser JSON. La librairie json2, écrite par Doug Crockford, permet d'émuler le comportement de l'objet natif JSON s'il n'est pas pris en charge par le navigateur. La librairie crée un objet global JSON pourvu des méthodes parse et stringify. La méthode parse est en fait un eval sécurisé, c'est-à-dire qu'un traitement est fait sur la chaine à évaluer pour s'assurer qu'elle ne présente aucun danger. Une démonstration de cette petite application peut être découverte ici. Il ne s'agit que de HTML statique bien évidemment, cela sert juste à illustrer la théorie. Principes synchrones et asynchrones La principale particularité d'ajax est l'asynchronisme : la fonction qui envoie une requête au serveur n'est pas la même que celle qui en recevra la réponse. Avant d'aborder la pratique d'ajax, il est bon de bien cerner cette notion d'asynchronisme qui est très importante. Quand un programme ou un script s'exécute, il appelle les différentes instructions dans l'ordre dans lequel elles sont placées : var plop = 0; // première instruction plop += 2; // deuxième alert(plop); // et troisième Maintenant, imaginons qu'il y ait un appel de fonction : var plop = 0; // première instruction plop = additionner(plop, 2); // deuxième alert(plop); // et troisième Quand la fonction additionner() est appelée, le script principal se met en pause, et attend que la fonction soit exécutée, et qu'elle ait renvoyé ou non une valeur. On dit que le script est exécuté de façon synchrone : quand un appel externe au script principal est réalisé, le script en attend la réponse ou la fin de l'exécution. Le contraire de synchrone est asynchrone. Quand un appel est asynchrone, le script principal n'attend pas d'avoir reçu les données pour continuer. Evidemment, si mon exemple synchrone marche bien avec des fonctions, il ne marche pas si le script est asynchrone ; imaginons donc une requête de type AJAX! Le script s'exécute et rencontre une requête AJAX, laquelle est envoyée en mode asynchrone. Dans ce cas, la requête est envoyée, mais le script n'attend pas que la requête ait abouti, il continue quoiqu'il arrive. L'intérêt est que si la requête met quelques secondes à être traitée par le serveur, le script n'est pas ralenti. 5

Mais si la requête est envoyée et que le script n'attend pas sa réponse, comment savoir quand cette requête renvoie quelque chose? Bonne question. Et c'est ici qu'interviennent les fonctions dites de callback. Une fonction callback est exécutée quand la requête aboutit à quelque chose, que son traitement est fini. Et c'est cette fonction de callback qui va se charger de récupérer les données renvoyées par la requête. Ainsi, quand la requête est envoyée, le script continue son exécution, et quand la requête renvoie quelque chose, c'est la fonction de callback qui est appelée, et c'est elle qui va faire "suite" au script principal, en traitant les informations renvoyées. On peut résumer l'asynchronisme en AJAX par ce schéma : 6