Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des...
Transcript of Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des...
![Page 1: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/1.jpg)
Programmation WebAJAX
Thierry Hamon
Bureau H202Institut Galilee - Universite Paris 13
&LIMSI-CNRS
http://perso.limsi.fr/hamon/Teaching/ProgWeb-20132014/
1/25
![Page 2: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/2.jpg)
Asynchronous Javascript And XML (AJAX)Introduction
Introduit en 2005 par Jesse James Garrett
Applications Web avec interface utilisateur
Deportation d’une partie des traitements lies a l’interface ducode cote client
Reduction des ressources utilisees cote serveurEconomie de bande passante
Exemple d’application Web AJAX :
Google Mail, Maps, Earth, etc.Liste de suggestions automatiquesTraitement de texte
2/25
![Page 3: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/3.jpg)
Asynchronous Javascript And XML (AJAX)Introduction
Regroupe un ensemble de technologie Web utiliseesconjointement (HTML, CSS, DOM, Javascript,XMLHttpRequest, XML)
Permet la recuperation de donnees sur le serveur de maniereasynchrone, sans interferer avec les donnees dans la pagecourante (utilisation de l’objet XMLHttpRequest)
Utilise comme format d’echange, XML, des fichiers textes etaussi JSON
3/25
![Page 4: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/4.jpg)
Asynchronous Javascript And XML (AJAX)Introduction
Deux composants (Application Web Classique) :
Serveur (implementation JAVA ou PHP par exemple)
Controle general de l’applicationPropose des ressources statiques : Modele du document,bibliotheque de scripts, feuilles de styleTraitement dynamique des donneesComposition dynamique de l’interface
Client (implementation Javascript par exemple)
Controle delegues en fonction du type de vue
Gestion des evenements utilisateurComposition dynamique de l’interface
Traitement des donnees recues
Dialogue : HTTP, (X)HTML
4/25
![Page 5: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/5.jpg)
Asynchronous Javascript And XML (AJAX)Introduction
Deux composants (Application Web AJAX) :
Serveur (implementation JAVA ou PHP par exemple)
Controle general de l’applicationPropose des ressources statiques : Modele du document,bibliotheque de scripts, feuilles de styleTraitement dynamique des donnees
Composition dynamique de l’interface
Client (implementation Javascript par exemple)
Controle delegues en fonction du type de vueGestion des evenements utilisateurComposition dynamique de l’interfaceTraitement des donnees recues
Dialogue : HTTP, XML, JSON
4/25
![Page 6: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/6.jpg)
FonctionnementSchema
Source : http://www.codeproject.com/KB/showcase/FarPointAJAX.aspx
5/25
![Page 7: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/7.jpg)
FonctionnementIllustration
1 Requete asynchrone au serveur dans une fonction JavaScript,declenchee par un evenement
2 Transfert asynchrone de donnees en XML
3 Traitement dynamique du cote client pour affichage inclusionau document HTML, transformation XSLT, etc.
4 Requete asynchrone sur un document XML en utilisant unobjet XMLHttpRequest (Mozilla) ou un controle ActiveXXMLHTTP (IE)
5 Puis communication AJAX
6/25
![Page 8: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/8.jpg)
FonctionnementCommunication AJAX
Client :
Envoi de la requete :
Creation de l’objet requete (XMLHttpRequest)Specification des elements de la requete (URL, methode,headers HTTP, parametres)Association d’un gestionnaire d’evenementsEnvoi de l’objet
Reception de la reponse :
A chaque modification de l’etat de la requete : tester si dansl’etat readyTraitement des donnees recues (Ajout a l’interface,transformation XSL)
Serveur :
Definition des actions a realiser lors de la reception d’unerequete asynchrone AJAX
7/25
![Page 9: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/9.jpg)
Objet XMLHttpRequest
API utilisee
par JavaScript et d’autres langages de scripts
pour transferer des donnees au format XML, texte ou JSONentre le client (navigateur) et le serveur Web
de maniere asynchrone generalement. Mais possibilited’utilisation synchrone (mais est-ce vraiment utile ? )
Creation de l’objet XMLHttpRequest : methode ActiveXObject(IE) et objet Javascript XMLHttpRequest
8/25
![Page 10: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/10.jpg)
Exemples de codeCreation de l’objet requete
v a r r e q = nu l l ;f u n c t i o n g e t R e q u e s t ( ){
i f ( window . XMLHttpRequest ){
r e q = new XMLHttpRequest ( ) ;}e l s e i f ( t y p e o f A c t i v e X O b j e c t != "undefined" ){
r e q=new A c t i v e X O b j e c t ("Microsoft.XMLHTTP" ) ;}return r e q ;
}
9/25
![Page 11: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/11.jpg)
Exemples de codeChargement asychrone - simple
f u n c t i o n GetDataUsingAJAX ( e l t ){
// elt : contenu d’un champs
i f ( xmlHttp != n u l l ){
// Association de la fonction de gestion de l’ etat
v a r u r l="http ://www.univ -paris13.fr/monscript.php?elt=" + e l t ;
// methode sans parametre
xmlHttp . o n r e a d y s t a t e c h a n g e = s t a t e C h a n g e d ;xmlHttp . open ( "GET" , u r l , t rue ) ;xmlHttp . send ( n u l l ) ;
}}
f u n c t i o n s t a t e C h a n g e d ( ){
i f ( xmlHttp . r e a d y S t a t e ==4) {document . getE lementBy Id ( "txt" ) . innerHTML=xmlHttp . r e s p o n s e T e x t ;
}}
10/25
![Page 12: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/12.jpg)
Exemples de codeChargement asychrone - XML
f u n c t i o n GetDataUsingAJAX ( e l t ){
// elt : element XML du document
i f ( r e q != n u l l ){
// Association de la fonction de gestion de l’ etat
v a r u r l="http ://www.univ -paris13.fr/monscript.php?elt=" + e l t ;
// methode avec parametres
r e q . o n r e a d y s t a t e c h a n g e = f u n c t i o n ( ) { s t a t e C h a n g e ( e l t ) } ;
r e q . open ( "GET" , u r l , t rue ) ;// pour les requetes XML
r e q . s e t R e q u e s t H e a d e r ( "Accept" , "application/xml" ) ;r e q . send ( n u l l ) ;
}}
11/25
![Page 13: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/13.jpg)
Exemples de codeGestion de l’etat - XML
f u n c t i o n s t a t e C h a n g e ( e l t ){ // elt : element XML du document
i f ( r e q . r e a d y S t a t e == 4) { // READY_STATE_COMPLETE
i f ( r e q . responseXML != n u l l ) {v a r docXML= r e q . responseXML ;
} e l s e {v a r docXML= r e q . r e s p o n s e T e x t ;docXML=p a r s e F r o m S t r i n g (docXML) ;
}v a r docXMLresult = tra i teXML (docXML) ;v a r s t r = (new X M L S e r i a l i z e r ( ) ) . s e r i a l i z e T o S t r i n g ( docXMLresult ) ;document . getE lementBy Id ( e l t ) . innerHTML += s t r ;
}}
12/25
![Page 14: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/14.jpg)
Proprietes de l’objet XMLHttpRequest
StatusRenvoie l’etat de la requete
200 : OK, page trouvee404 : page non trouvee
onreadystatechange
Association d’une fonction recevant et traitant les donneesretournees par le serveur apres une requeteUtilisation d’un pointeur de fonction
13/25
![Page 15: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/15.jpg)
Proprietes de l’objet XMLHttpRequest
readyState
Gestion de l’etat de la reponse du serveurA chaque changement d’etat, la fonction associee aonreadystatechange est executee
Valeurs possibles :Etat Description
0 Requete non initialisee1 Connexion etablie2 Requete recue3 Reponse en cours/Traitement de la requete en cours4 Reponse envoyee/Termine
14/25
![Page 16: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/16.jpg)
Proprietes de l’objet XMLHttpRequest
responseXML
Retourne un objet DOM du XML renvoye par le serveur
responseText
Retourne une chaıne de caracteres contenant les donneeschargeesA utiliser si on ne souhaite pas traiter les donnees enJavascript mais uniquement les afficher (par exemple, donneesHTML)
15/25
![Page 17: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/17.jpg)
Methode de l’objet XMLHttpRequest
Utilisation de 2 methodes pour l’envoi
open() – preparation de la requete3 arguments :
1 Methode utilisee pour l’envoi de la requete (GET ou POST)2 URL du script cote server3 booleen indiquant si la requete doit etre envoyee de maniere
asynchrone ou non
send() – envoie de la requete au serveur1 argument :
1 donnees a passer au script cote serveur
methode GET : nullmethode POST : variable ou chaıne de caracteres
16/25
![Page 18: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/18.jpg)
JavaScript Object Notation (JSON)
Format alternatif a XML
Natif en Javascript
Permet l’echange de donnees entre client et serveur sansanalyse (contrairement au XML).
JSON vs. XML :
JSON : facilite de lecture et simplicite de mise en oeuvreXML : extensible et reconnu dans tous les langages deprogrammation
17/25
![Page 19: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/19.jpg)
SyntaxeElements :
Objet : contient des
objets sous forme d’une liste de membres
{ nommembre1 : valmembre1 , nommembre2 :valmembre2 , . . . }
tableaux sous forme d’une liste de valeurs
[ v a l e u r 1 , v a l e u r 2 , . . . ]
Variable scalaire de type Number, String ou Boolean
Tableaux [ valeur1, valeur2, ...] (valeur : objet,tableau, etc.)
Valeurs litterales : null, false, true, valeur numerique,chaıne de caracteres (entre ")
Membre : "nom" : "valeur"
18/25
![Page 20: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/20.jpg)
Exemple de fichier JSON
{"menu" : "Fichier" ,"commandes" : [
{"title" : "Nouveau" ,"action" : "CreateDoc"
} ,{
"title" : "Ouvrir" ,"action" : "OpenDoc"
} ,{
"title" : "Fermer" ,"action" : "CloseDoc"
}]
}
<?xml v e r s i o n="1.0" ?><r o o t>
<menu>F i c h i e r</menu><commands>
<i t em>< t i t l e>Nouveau</ v a l u e><a c t i o n>CreateDoc</ a c t i o n>
</ i tem><i t em>
< t i t l e>O u v r i r</ v a l u e><a c t i o n>OpenDoc</ a c t i o n>
</ i tem><i t em>
< t i t l e>Fermer</ v a l u e><a c t i o n>CloseDoc</ a c t i o n>
</ i tem></commands>
</ r o o t>
19/25
![Page 21: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/21.jpg)
Utilisation d’un fichier JSONcote client
Recuperation des donnees avec la methode eval() et utilisation d’elements etde la syntaxe Javascript :
r e q . open ( "GET" , "fichier.json" , t rue ) ; // requete
var doc = e v a l ( ’(’ + r e q . r e s p o n s e T e x t + ’)’ ) ; // recuperation
var nomMenu = document . getE lementById ( ’jsmenu ’ ) ; // recherche
nomMenu . v a l u e = doc . menu ; // assignation
doc . commands [ 0 ] . t i t l e // lecture de la valeur "title" dans le tableau
doc . commands [ 0 ] . a c t i o n // lecture de la valeur "action" dans le tableau
{ "menu" : "Fichier" ,"commandes" : [{ "title" : "Nouveau" ,
"action" : "CreateDoc"} ,{ "title" : "Ouvrir" ,
"action" : "OpenDoc"
} ,{ "title" : "Fermer" ,
"action" : "CloseDoc"
}]
}
20/25
![Page 22: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/22.jpg)
Utilisation d’un fichier JSONcote serveur
Utilisation de librairie propres a chaque langage (voirjson.org) :Java : org.json.*Perl : JSONPHP : (interne en 5.2), jsonetc.
21/25
![Page 23: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/23.jpg)
Avantages et inconvenients d’AJAX
Avantages :
plus interactivite au niveau du clientreponse plus rapidereduction des transactions client/serveur (recuperation desscripts et des feuilles de style une fois pour toute)separation des methodes pour la transmission de l’informationet des formats utilises pour representer les informations
22/25
![Page 24: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/24.jpg)
Avantages et inconvenients d’AJAX
Inconvenients :
Pas d’enregistrement dans l’historique du navigateur des pagesmodifiees dynamiquementSolution en modifiant la partie ancre (#) de l’URLDifficulte a bookmarker l’etat particulier d’une pagePas d’indexation possible des pages par les moteurs derechercheSi un navigateur ne supporte pas Javascript et AJAX, la pageest inutilisable
23/25
![Page 25: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/25.jpg)
Alternatives
Flex et Flash : concurrents de AJAXMais possibilite de combiner leur utilisationvoir Goowy http://www.goowy.com/ (Bureau virtuel)
YAML (YAML Ain’t Markup Language) : format d’echangebase sur l’utlisation de caracteres speciaux :: & ! ? - --- [ ] *, etc.Fichier JSON : contenu YAML valide (et non l’inverse), saufles commentairesFormat YAML moins lisible que JSON ( ?)
24/25
![Page 26: Programmation Web AJAX · 2014-01-16 · Contr^ole g en eral de l’application Propose des ressources statiques : Mod ele du document, biblioth eque de scripts, feuilles de style](https://reader033.fdocuments.in/reader033/viewer/2022042123/5e9dcd2f5adeb659f00b0fd3/html5/thumbnails/26.jpg)
Pour aller plus loin
Description d’AJAX :https://developer.mozilla.org/fr/AJAX
Exemples et tutoriels du W3C :http://www.w3schools.com/Ajax/ajax_examples.asp
Frameworks : voir http://www.ajaxprojects.com/
openAjax (IBM) : DojoRuby / Ruby on Rails (RoR)Plugins Eclipse : Rich Ajax Platform, Direct Web RemotingPHP : http://ajaxpatterns.org/PHP_Ajax_Frameworks
Bibliotheques :
SAJAXGoogle Web Toolkit (AJAXSLT...)
Article de Jesse James Garrett introduisant AJAX :http://www.adaptivepath.com/ideas/essays/archives/000385.php
25/25