Programmation Web Avancée AJAX



Documents pareils
Programmation Web. Madalina Croitoru IUT Montpellier

DOM - Document Object Model

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

les techniques d'extraction, les formulaires et intégration dans un site WEB

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Petite définition : Présentation :

Ajax, RIA et HTML Prise en charge d Ajax

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

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

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

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Application Web et J2EE

Le stockage local de données en HTML5

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Formation : WEbMaster

BES WEBDEVELOPER ACTIVITÉ RÔLE

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

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

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

Programmation Internet Cours 4

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Les outils de création de sites web

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

Comparatif CMS. Laurent BAUREN S Bérenger VIDAL Julie NOVI Tautu IENFA

Développement des Systèmes d Information

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Architectures web/bases de données

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

Joomla! Création et administration d'un site web - Version numérique

Programmation Web. Introduction

Introduction à. Oracle Application Express

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

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

Veille technologique

Livre Blanc WebSphere Transcoding Publisher

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Architecture Orientée Service, JSON et API REST

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

4. SERVICES WEB REST 46

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

RAPPORT DE PROJET Logiciel de gestion de factures - Vébulon

Dojo Toolkit. Créer des applications AJAX/RIA en JavaScript. Thomas Corbière

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

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Armand PY-PATINEC 2010

Intégration du Web 2.0 dans les solutions IBM

Programmation Web Avancée Introduction aux services Web

Informations générales. Technologies. css3-html5-php-ajax-j-query-mootools-action-script3

TP JAVASCRIPT OMI4 TP5 SRC

HTML. Notions générales

Point sur les solutions de développement d apps pour les périphériques mobiles

Module BD et sites WEB

LEA.C5. Développement de sites Web transactionnels

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

4D Web 2.0 Pack DATA LIVES HERE. TM. Internet Riche et Solutions Mobiles en toute simplicité. 4D Ajax Framework 4D Ajax for Dreamweaver 4D for Flex

Rafraichissement conditionné d'une page en.net

Hébergement de site web Damien Nouvel

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Sommaire. -1-Computer en bref. Web en bref. Le web 3.0,...la mobilité. Evolution du Web web1.0, web2.0, web2.b, web3.0...

Catalogue Formations Jalios

25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

CATALOGUE FORMATION 2015

Echosgraphik. Ce document sert uniquement à vous donner une vision sur ma manière de travailler et d appréhender un projet

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Firefox pour Android. Guide de l utilisateur. press-fr@mozilla.com

Applications et Services WEB: Architecture REST

novatis Agence Web innovatrice

Bien architecturer une application REST

L3 informatique TP n o 2 : Les applications réseau

Bonnes pratiques de développement JavaScript

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

dmp.gouv.fr Pour en savoir plus DMP Info Service : 24h/24 7j/7

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

Panel des technologies Web

Diffuser un contenu sur Internet : notions de base... 13

1.2 - Définition Web 2.0 ( wikipedia )

Plateforme PAYZEN. Définition de Web-services

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

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

ZOTERO. Installation. Bibliothèque de Pharmacie. Service Formation

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Introduction aux «Services Web»

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

SYSTÈMES DE PUBLICATION POUR L INTERNET. Beatep Marie-France Landréa - Observatoire de Paris

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Optimiser moteur recherche

Modèle de cahier des charges pour un appel d offres relatif à une solution de gestion des processus métier (BPM)

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

CAHIER DES CHARGES D IMPLANTATION

Bibliothèque Numérique L'intégrale Collection Ressources Informatiques

FileMaker Server 12. publication Web personnalisée avec XML

Java DataBaseConnectivity

ECLIPSE ET PDT (Php development tools)

Transcription:

1/28 Programmation Web Avancée AJAX Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017 Bobigny cedex Tél. : 33 1.48.38.73.07, Fax. : 33 1.48.38.73.55 thierry.hamon@univ-paris13.fr http://www-limbio.smbh.univ-paris13.fr/membres/hamon/pwa-20122013

2/28 Asynchronous Javascript And XML (AJAX) Introduction Introduit en 2005 par Jesse James Garrett Applications Web avec interface utilisateur Déportation d une partie des traitements liés à l interface du code coté client Réduction des ressources utilisées coté serveur Economie de bande passante Exemple d application Web AJAX : Google Mail, Maps, Earth, etc. Liste de suggestions automatiques Traitement de texte

3/28 Asynchronous Javascript And XML (AJAX) Introduction Regroupe un ensemble de technologie Web utilisées conjointement (HTML, CSS, DOM, Javascript, XMLHttpRequest, XML) Permet la récupération de données sur le serveur de manière asynchrone, sans interférer avec les données dans la page courante (utilisation de l objet XMLHttpRequest) Utilise comme format d échange, XML, des fichiers textes et aussi JSON

4/28 Asynchronous Javascript And XML (AJAX) Introduction Deux composants (Application Web Classique) : Serveur (implémentation JAVA ou PHP par exemple) Contrôle général de l application Propose des ressources statiques : Modèle du document, bibliothèque de scripts, feuilles de style Traitement dynamique des données Composition dynamique de l interface Client (implémentation Javascript par exemple) Gestion des évènements utilisateur Composition dynamique de l interface Dialogue : HTTP, (X)HTML

4/28 Asynchronous Javascript And XML (AJAX) Introduction Deux composants (Application Web AJAX) : Serveur (implémentation JAVA ou PHP par exemple) Contrôle général de l application Propose des ressources statiques : Modèle du document, bibliothèque de scripts, feuilles de style Traitement dynamique des données Client (implémentation Javascript par exemple) Contrôle délégués en fonction du type de vue Gestion des évènements utilisateur Composition dynamique de l interface Traitement des données reçues Dialogue : HTTP, XML, JSON

5/28 Fonctionnement Schéma Source : http: //www.codeproject.com/kb/showcase/farpointajax.aspx

6/28 Fonctionnement Illustration 1 Requête asynchrone au serveur dans une fonction JavaScript, déclenchée par un événement 2 Transfert asynchrone de données en XML 3 Traitement dynamique du côté client pour affichage inclusion au document HTML, transformation XSLT, etc. 4 Requête asynchrone sur un document XML en utilisant un objet XMLHttpRequest (Mozilla) ou un contrôle ActiveX XMLHTTP (IE) 5 Puis communication AJAX

7/28 Client : Envoi de la requête : Fonctionnement Communication AJAX Création de l objet requête (XMLHttpRequest) Spécification des éléments de la requête (URL, méthode, headers HTTP, paramètres) Association d un gestionnaire d événements Envoi de l objet Réception de la réponse : A chaque modification de l état de la requête : tester si dans l état ready Traitement des données reçues (Ajout à l interface, transformation XSL)

8/28 Fonctionnement Communication AJAX Serveur : Définition des actions à réaliser lors de la réception d une requête asynchrone AJAX

9/28 Objet XMLHttpRequest API utilisée par JavaScript et d autres langages de scripts pour transférer des données au format XML, texte ou JSON entre le client (navigateur) et le serveur Web de manière asynchrone généralement. Mais possibilité d utilisation synchrone (mais est-ce vraiment utile?) Création de l objet XMLHttpRequest : méthode ActiveXObject (IE) et objet Javascript XMLHttpRequest

10/28 Exemples de code Création de l objet requête v a r req = n u l l ; f u n c t i o n g etrequest ( ) { i f ( window. XMLHttpRequest ) { req = new XMLHttpRequest ( ) ; e l s e i f ( t y p e o f A c t i v exobject!= u n d e f i n e d ) { req=new ActiveXObject ( M i c r o s o f t.xmlhttp ) ; return req ;

11/28 Exemples de code Création de l objet requête v a r xmlhttp ; f u n c t i o n basicajaxexample ( ) { t r y { xmlhttp=new XMLHttpRequest ( ) ; // Firefox, Opera 8.0+, S a f a r i catch ( e ) { t r y { xmlhttp=new ActiveXObject ( Msxml2.XMLHTTP ) ; // IE 6.0+ catch ( e ) { t r y { xmlhttp=new ActiveXObject ( Microsoft.XMLHTTP ) ; // IE 5.5+ catch ( e ) { a l e r t ( Your b r o w s e r does not s u p p o r t AJAX! ) ; r e t u r n f a l s e ;

12/28 Exemples de code Chargement asychrone - simple function GetDataUsingAJAX ( e l t ) { // e l t : contenu d un champs i f ( xmlhttp!= n u l l ) { // Ass ociation de l a fon cti on de gestion de l état v a r u r l= h t t p : / /www. univ p a r i s 1 3. f r / m o n s c r i p t. php? e l t= + e l t ; // méthode s a n s p a r a m è t r e xmlhttp. o n r e a d y s t a t e c h a n g e = statechanged ; xmlhttp. open ( GET, u r l, t r u e ) ; xmlhttp. send ( n u l l ) ; f u n c t i o n statechanged ( ) { i f ( xmlhttp. r e a d y S t a t e ==4) { document. getelementbyid ( txt ). innerhtml=xmlhttp. responsetext ;

13/28 Exemples de code Chargement asychrone - XML function GetDataUsingAJAX ( e l t ) { // e l t : element XML du document i f ( r e q!= n u l l ) { // Ass ociation de l a fon cti on de gestion de l état v a r u r l= h t t p : / /www. univ p a r i s 1 3. f r / m o n s c r i p t. php? e l t= + e l t ; // méthode avec p a r a m è t r e s req. onreadystatechange = function ( ) {statechange ( e l t ) ; r e q. open ( GET, u r l, t r u e ) ; // pour l e s r e q u e t e s XML r e q. s e t R e q u e s t H e a d e r ( Accept, a p p l i c a t i o n / xml ) ; r e q. send ( n u l l ) ;

14/28 Exemples de code Gestion de l état - XML f u n c t i o n s t a t e C h a n g e ( e l t ) { // e l t : element XML du document i f ( req. readystate == 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 { var docxml= req. responsetext ; docxml=parsefromstring (docxml ) ; var docxmlresult = traitexml (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. g e t E l e m e n t B y I d ( e l t ). innerhtml += s t r ;

15/28 Exemples de code Transformation XSLT // Après chargement a s y n c h r o n e des documents XML e t XSLT function transformxslt (XMLDoc, XSLDoc, i d ) { i f (XMLDoc == n u l l XSLDoc == n u l l ) { r e t u r n ; t r y { // I n t e r n e t E x p l o r e r i f ( window. ActiveXObject ) { v a r t a r g e t = document. g etelementbyid ( i d ) ; t a r g e t. innerhtml = xml. transformnode ( x s l ) ; e l s e i f ( window. XSLTProcessor ) { // S a f a r i / M o z i l l a var fragment ; v a r x s l t P r o c e s s o r = new XSLTProcessor ( ) ; x s l t P r o c e s s o r. i m p o r t S t y l e s h e e t ( x s l ) ; fragment = x s l t P r o c e s s o r. transformtofragment ( xml, document ) ; v a r t a r g e t = document. g etelementbyid ( i d ) ; t a r g e t. a p p e n d C h i l d ( fragment ) ; catch ( e ) { r e t u r n e ;

16/28 Propriétés de l objet XMLHttpRequest Status Renvoie l état de la requête 200 : OK, page trouvée 404 : page non trouvée onreadystatechange Association d une fonction recevant et traitant les données retournées par le serveur après une requête Utilisation d un pointeur de fonction

17/28 Propriétés de l objet XMLHttpRequest readystate Gestion de l état de la réponse du serveur A chaque changement d état, la fonction associée à onreadystatechange est exécutée Valeurs possibles : Etat Description 0 Requête non initialisée 1 Connexion établie 2 Requête reçue 3 Réponse en cours/traitement de la requête en cours 4 Réponse envoyée/terminé

18/28 Propriétés de l objet XMLHttpRequest responsexml Retourne un objet DOM du XML renvoyé par le serveur responsetext Retourne une chaîne de caractères contenant les données chargées A utiliser si on ne souhaite pas traiter les données en Javascript mais uniquement les afficher (par exemple, données HTML)

19/28 Méthode de l objet XMLHttpRequest Utilisation de 2 méthodes pour l envoi open() préparation de la requête 3 arguments : 1 Méthode utilisée pour l envoi de la requête (GET ou POST) 2 URL du script coté server 3 booléen indiquant si la requête doit être envoyée de manière asynchrone ou non send() envoie de la requête au serveur 1 argument : 1 données à passer au script coté serveur méthode GET : null méthode POST : variable ou chaîne de caractères

20/28 JavaScript Object Notation (JSON) Format alternatif à XML Natif en Javascript Permet l échange de données entre client et serveur sans analyse (contrairement au XML). JSON vs. XML : JSON : facilité de lecture et simplicité de mise en oeuvre XML : extensible et reconnu dans tous les langages de programmation

21/28 Eléments : Objet : contient des Syntaxe objets sous forme d une liste de membres { nommembre1 : valmembre1, nommembre2: valmembre2,... tableaux sous forme d une liste de valeurs [ valeur1, valeur2,...] Variable scalaire de type Number, String ou Boolean Tableaux [ valeur1, valeur2,...] (valeur : objet, tableau, etc.) Valeurs littérales : null, false, true, valeur numérique, chaîne de caractères (entre ") Membre : "nom" : "valeur"

22/28 Exemple de fichier JSON { menu : F i c h i e r, commandes : [ { t i t l e : Nouveau, a c t i o n : CreateDoc, { t i t l e : O u v r i r, a c t i o n : OpenDoc, { t i t l e : Fermer, a c t i o n : 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> <item> < t i t l e>nouveau</ v a l u e> <a c t i o n>createdoc</ a c t i o n> </ item> <item> < 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> </ item> <item> < t i t l e>fermer</ v a l u e> <a c t i o n>closedoc</ a c t i o n> </ item> </commands> </ r o o t>

Utilisation d un fichier JSON coté client Récupération des données avec la méthode eval() et utilisation d éléments et de la syntaxe Javascript : r e q. open ( GET, f i c h i e r. j s o n, t r u e ) ; // r e q u ê t e v a r doc = e v a l ( ( + r e q. r e s p o n s e T e x t + ) ) ; // r é c u p é r a t i o n var nommenu = document. getelementbyid ( jsmenu ) ; // recherche nommenu. v a l u e = doc. menu ; // a s s i g n a t i o n 23/28 doc. commands [ 0 ]. t i t l e // l e c t u r e de l a v a l e u r t i t l e dans l e t a b l e a u doc. commands [ 0 ]. a c t i o n // l e c t u r e de l a v a l e u r a c t i o n dans l e t a b l e a u Fichier fichier.json : { menu : F i c h i e r, commandes : [ { t i t l e : Nouveau, a c t i o n : CreateDoc, { t i t l e : O u v r i r, a c t i o n : OpenDoc, { t i t l e : Fermer, a c t i o n : CloseDoc ]

24/28 Utilisation d un fichier JSON coté serveur Utilisation de librairie propres à chaque langage (voir json.org) : Java : org.json.* Perl : JSON PHP : (interne en 5.2), json etc.

25/28 Avantages et inconvénients d AJAX Avantages : plus interactivité au niveau du client réponse plus rapide réduction des transactions client/serveur (récupération des scripts et des feuilles de style une fois pour toute) séparation des méthodes pour la transmission de l information et des formats utilisés pour représenter les informations

26/28 Avantages et inconvénients d AJAX Inconvénients : Pas d enregistrement dans l historique du navigateur des pages modifiées dynamiquement Solution en modifiant la partie ancre (#) de l URL Difficulté à bookmarker l état particulier d une page Pas d indexation possible des pages par les moteurs de recherche Si un navigateur ne supporte pas Javascript et AJAX, la page est inutilisable

27/28 Alternatives Flex et Flash : concurrents de AJAX Mais possibilité de combiner leur utilisation voir Goowy http://www.goowy.com/ (Bureau virtuel) YAML (YAML Ain t Markup Language) : format d échange basé sur l utlisation de caractères spéciaux : : &!? - --- [ ] *, etc. Fichier JSON : contenu YAML valide (et non l inverse), sauf les commentaires Format YAML moins lisible que JSON (?)

28/28 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) : Dojo Ruby / Ruby on Rails (RoR) Plugins Eclipse : Rich Ajax Platform, Direct Web Remoting PHP : http://ajaxpatterns.org/php_ajax_frameworks Bibliothèques : SAJAX Google Web Toolkit (AJAXSLT...) Article de Jesse James Garrett introduisant AJAX : http://www.adaptivepath.com/ideas/essays/archives/000385.php