Ajax1 A. Obaid - Programmation web (INF2005) AJAX.

Slides:



Advertisements
Présentations similaires
« Les Mercredis du développement » Ajax / Client CallBack / Atlas
Advertisements

Conception de Site Webs dynamiques Cours 6
Conception de Site Webs dynamiques Cours 5
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
Copyright France Télécom, tous droits réservés Paris Web Ateliers Les bibliothèques JS jQuery Orange Labs Julien Wajsberg, Recherche & Développement.
Exposé de Système - Informatique et Réseau
Adapté du cours de Sang Shin, Sun Microsystems
TP 3-4 BD21.
Jérôme CUTRONA AJAX Jérôme CUTRONA 01:07:47 Programmation Web
Introduction aux Web Services Partie 1. Technologies HTML-XML
Common Gateway Interface
Oct.-2000DESS IIDEE © B. BAH 1 ASP Caractéristiques dun fichier ASP Son extension : « *.asp » La balise: Son indépendance vis à vis de toute plate–forme,
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
AJAX et les langages serveurs
Le langage PHP 5.
Le langage ASP Les variables d'environnement HTTP avec Request.
SERVLETS PRESENTATION
Comprendre l’environnement Web
Ajax Asynchronous JavaScript And XML
Les instructions PHP pour l'accès à une base de données MySql
28 novembre 2012 Grégory Petit
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Introduction aux technologies AJAX Ajax François BONNEVILLE
Méthode de suppression des cadres entourant les animations flash et activation automatique de leur focus lors du chargement des pages dans Internet Explorer.
Manipulation de formulaires en Javascript
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
PHP Géant Aurélien. PHP (Hypertext Preprocessor) Langage de scripts libre Permet produire des pages Web dynamiques dispose d'un très grand nombre d'API(Application.
AJAX.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Animateur : Med HAIJOUBI
Introduction aux technologies AJAX Ajax François BONNEVILLE
PHP & My SQL.
Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA
PROGRAMMATION WEB FRONT-END.
JavaScript Nécessaire Web.
PHP 5° PARTIE : LES COOKIES
JavaScript.
Cours de programmation web
Les balises HTML et les objets JavaScript correspondants Objet document L'objet document est important dans la mesure ou il contient tous les objets du.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
GESTION DE COMPOSANTS ELECTRONIQUES
S'initier au HTML et aux feuilles de style CSS Cours 5.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Page 1Dernière mise à jour: 17 avril 2015 Service de l'enseignement des technologies de l'information, © HEC Montréal, Tous droits réservés.
AJAX Open Source Etat de l’art Baris Ulucinar, Octobre 2006 University of Fribourg, Suisse Sous la direction de Prof. O. Abou Khaled.
Asynchronous JavaScript And XML AJAX C. Petitpierre
S'initier au HTML et aux feuilles de style CSS Cours 5.
 Formulaires HTML : traiter les entrées utilisateur
AJAX Jérôme CUTRONA 06:28:58 Programmation Web
Initiation au JavaScript
Initiation au web dynamique Licence Professionnelle.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
HTML Création et mise en page de formulaire Cours 3.
Apports des clients riches dans le monde du WEB 2.0
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
HTML Création et mise en page de formulaire
Principes et variables
** Flash séance 2 Action script. ** Action Script Ajoute de l’interactivité Permet de contrôler les clips  Langage de programmation orienté objet.
Flash MX – Séance 2 Interactions & ActionScript David Rapin Si28 P06.
INF2005– Programmation web– A. Obaid Les cartes. INF2005– Programmation web– A. Obaid Images cliquables Outil permettant d'effectuer des liens à partir.
INF2005– Programmation web– A. Obaid Les métadonnées.
INF2005– Programmation web– A. Obaid HTML 5. INF2005– Programmation web– A. Obaid 2 HTML 5 Nouveau standard en développement basé sur HTML et XHTML Supporté.
Web 2.0 Dailymotion YouTubeYouTube (Google) MySpace Facebook DMOZDMOZ (annuaire participatif) ExaleadExalead (moteur de recherche) AdSenseAdSense (Google)
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
AJAX Jean-Jacques LE COZ. Introduction Technologie incontournable aujourd'hui Soubassement technique au Web 2.0 Technologie déjà présente dans les applications.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
1 Programmation Web Programmation WAMP/LAMP Premiers principes.
Asynchronous Javascript And Xml
Transcription de la présentation:

Ajax1 A. Obaid - Programmation web (INF2005) AJAX

Ajax2 A. Obaid - Programmation web (INF2005) AJAX l Asynchronous JavaScript And XML. –Technologie pour créer des pages web interactives –Basées sur XML, HTML et JavaScript l Utilise: –HTML pour le marquage –XML pour représenter les résultats –CSS pour la présentation –JavaScript pour récupérer les données et les afficher

Ajax3 A. Obaid - Programmation web (INF2005) Rôle de JavaScript l Définit une objet pour envoyer des requêtes HTTP l Initie la requête l Obtient l'objet de requête (Request) l Désigne une fonction callBack pour traiter la réponse l Définit des événements d'arrivée de la réponses l Initie des requêtes GET ou POST l Attend que la réponse soit arrivée l Manipule la réponse et extrait le résultat l Traite le résultat l Construit les éléments d'affichage

Ajax4 A. Obaid - Programmation web (INF2005) Modèle Ajax Interface usager Serveur web/XML Documents Web Navigateur Machine JavaScript XML Requête HTTP HTML + CSS Appel JavaScript Programme Interface usager Serveur web Documents Web HTML + CSS Requête HTTP Navigateur Programme

Ajax5 A. Obaid - Programmation web (INF2005) Interactions asynchrones l Lorsqu'on soumet un formulaire, JavaScript envoie une requête à un serveur, obtient le résultat et rafraichit l'écran avec les nouvelles données –Sans l'intervention explicite de l'usager l L'usager peut continuer à utiliser l'application web pendant que le navigateur cherche de l'information du serveur. l Formulaire sans bouton submit Name: Time:

Ajax6 A. Obaid - Programmation web (INF2005) Transaction Ajax l Une transaction consiste en –Ouverture de la connexion avec open() u On y spécifie la méthode (GET, POST ou HEAD): –L'envoi de données avec send() (si POST) –La réception de la réponse du serveur

Ajax7 A. Obaid - Programmation web (INF2005) Transactions Ajax Server: Microsoft-IIS/5.1 Date: Fri, 17 Nov :47:47 GMT Content-Type: text/xml Accept-Ranges: bytes Last-Modified: Fri, 17 Nov :07:51 GMT Content-Length: 21 xmlhttp.open("HEAD","Demo.jsp",true); xmlhttp.send(null); xmlhttp.open("GET","Demo.jsp?Prenom=Abdel&Nom=Obaid",true); Server: Microsoft-IIS/5.1 Date: Fri, 17 Nov :47:47 GMT Content-Type: text/xml Accept-Ranges: bytes Last-Modified: Fri, 17 Nov :07:51 GMT Content-Length: 200 … Donnees de la response … xmlhttp.send(null);

Ajax8 A. Obaid - Programmation web (INF2005) Transactions Ajax xmlhttp.open("POST","Demo.jsp",true); Server: Microsoft-IIS/5.1 Date: Fri, 17 Nov :47:47 GMT Content-Type: text/xml Accept-Ranges: bytes Last-Modified: Fri, 17 Nov :07:51 GMT Content-Length: 200 … Donnees de la response … xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); xmlhttp.send("FPrenom=Abdel&Nom=Obaid");

Ajax9 A. Obaid - Programmation web (INF2005) L'objet XMLHttpRequest l Contient la requête du client Ajax l Les méthodes utilisées pour créer un objet XMLHttpRequest dépendent du navigateur l Internet Explorer: u new ActiveXObject("Microsoft.XMLHTTP"); l FireFox, Safari, …: u new XMLHttpRequest();

Ajax10 A. Obaid - Programmation web (INF2005) Envoi de la requête var requete; function obtenirObjetRequete() { if (window.ActiveXObject) { return(new ActiveXObject("Microsoft.XMLHTTP")); } else if (window.XMLHttpRequest) { return(new XMLHttpRequest()); } … } function envoyerRequete() { requete = obtenirObjetRequete(); requete.onreadystatechange = traiterReponse ; requete.open("GET", "URL", true); requete.send(null); } function traiterReponse () { if (requete.readyState == 4) { alert("Reponse recue : "+ requete.responseText); }

Ajax11 A. Obaid - Programmation web (INF2005) Exemple function ajaxFunction() { var xmlHttp; try { requete=new XMLHttpRequest(); // Firefox, Opera, Safari } catch (e) { try { requete=new ActiveXObject("Msxml2.XMLHTTP"); // IE } catch (e) { try { requete=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("Votre navigateur ne supporte pas AJAX!"); return false; } } } } Name: Time:

Ajax12 A. Obaid - Programmation web (INF2005) Requête HTTP l Les requêtes se font grâce à des l'objet de requête dans un script JavaScript et les méthodes open() et send(): –open() a 3 paramètres: u Méthode HTTP (GET, POST,...) u URL de la page demandée (ex. Page PHP) u Flag de synchronisme (true/false). –send() a un paramètre: données envoyées au serveur si la méthode POST ou null si la méthode set GET.. httpRequest.open('POST', ' true); httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); httpRequest.send("prenom=Abdel&nom=Obaid&tel= " );

Ajax13 A. Obaid - Programmation web (INF2005) Réponses asynchrones l En asynchrone, on n'attend pas la réponse. On doit écrire un code pour attendre. –Fonction Callback qui attend l'arrivée d'un événement "Changement dans l'état de la réponse" u État de la réponse désigné par la propriété readyState qui prend une valeur ente 0 et 4. –Une valeur de 4, signifie que la réponse du serveur a été reçue entièrement et qu’elle est prête pour le traitement. l L'événement est capturé par la propriété onreadystatechange de l'objet requete –On lui spécifie la fonction Callbak requete = new XMLHttpRequest(); requete.overrideMimeType('text/xml'); requete t.onreadystatechange = fonctionDeTraitement; if (requete.readyState == 4) { …// Réponse reçue } else { …// pas encore prête }

Ajax14 A. Obaid - Programmation web (INF2005) Traitement de la réponse l L’état de la réponse est désigné par une valeur de 0 à 4. –4: réponse du serveur reçue entièrement et prête pour le traitement. –0 : requête non initialisée –1 : en cours de chargement –2 : données chargées –3 : données en cours d'interaction if (requete.readyState == 4) { …// Réponse reçue } else { …// pas encore prête }

Ajax15 A. Obaid - Programmation web (INF2005) Réponse du serveur l Les propriétés responseText et responseXML de XMLHttpRequest contiennent la réponse du serveur. l responseText. Contient la réponse en tant que chaine de caractères. u On peut la mettre sous forme texte HTML l responseXML : contient la réponse sous forme de document XML. u On peut la manipuler avec les API DOM appropriées.

Ajax16 A. Obaid - Programmation web (INF2005) Propriétés de XMLHttpRequest l Onreadystatechange: –appelée pour traiter la réponse du serveur l readyState: –Contient l’état de la réponse du serveur. A chaque fois que cette propriété change, la fonction onreadystatechange sera exécutée. l responseText: –stocke les données reçues en format texte responseXML: Stocke les données reçues en tant qu'objet XML l getAllResponseHeaders() : –retourne les valeurs des entêtes HTTP l getResponseHeader(header) : –retourne la valeur d'un lentête HTTP. l setRequestHeader(entete,valeur) : –assigne une valeur à un entête. l send(Données) : –envoie un requête au serveur dont l'URL est spécifiée dans open():

Ajax17 A. Obaid - Programmation web (INF2005) Exemple – Affichage de readyState function etat() { var requete; var vContenu = document.getElementById("contenu"); requete = new XMLHttpRequest(); requete.open("HEAD", " true); requete.onreadystatechange= function() { vContenu.innerHTML += "Etat: " + requete.readyState + " "; } requete.send(null); } ajax_etat.hml

Ajax18 A. Obaid - Programmation web (INF2005) Exemple – Lecture de données texte function Requete (URL) { var requeteHTTP= false; if (window.XMLHttpRequest) { requeteHTTP = new XMLHttpRequest(); if (requeteHTTP.overrideMimeType) { requeteHTTP.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { try { requeteHTTP = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { requeteHTTP = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } if (!requeteHTTP) { alert('Abandon : Impossible de créer une instance XMLHTTP'); return false; } requeteHTTP.onreadystatechange = changerContenu(requeteHTTP); requeteHTTP.open('GET',URL, true); requeteHTTP.send(null); }

Ajax19 A. Obaid - Programmation web (INF2005) Exemple – Lecture de données texte function lire() var requete; try{ requete = new XMLHttpRequest(); }catch (e){ try{ requete = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ requete = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ alert("Votre navigateur ne supporte pas Ajax !"); return false; }

Ajax20 A. Obaid - Programmation web (INF2005) Exemple – Lecture de données texte requete.onreadystatechange = function(){ if(requete.readyState == 4){ document.getElementById("texte").innerHTML=requete.responseText; } requete.open("GET", "texte1.txt", true); requete.send(null); } Lire le fichier texte

Ajax21 A. Obaid - Programmation web (INF2005) Traitement des requêtes l On peut traiter les requêtas en utilisant plusieurs technologies : –Servlets et JSP –Langages de programmation classique (C, C++) –Langages dédiés: PHP, Ruby,...

Ajax22 A. Obaid - Programmation web (INF2005) Exemple avec POST function obtenirObjectRequete() { if (window.ActiveXObject) { return(new ActiveXObject("Microsoft.XMLHTTP")); } else if (window.XMLHttpRequest) { return(new XMLHttpRequest()); } else {return(null);} } function envoyerRequete(param) { requete = obtenirObjectRequete(); requete.onreadystatechange = traiterReponse; requete.open("POST", "chercher2.php", true); requete.setRequestHeader("Content-type","application/x-www-form-urlencoded"); requete.send("nomProf="+param); } function traiterReponse() { if ((requete.readyState== 4) && (requete.status==200)) { document.getElementById("Contenu").innerHTML= requete.responseText; } ajax4_2.html

Ajax23 A. Obaid - Programmation web (INF2005) Exemple avec POST <?php $profs = array ( "Obaid"=>array( "PK-4740", "3206","Teleinformatique" ), "Tremblay"=>array ("PK-4435","8213","Genie logiciel"), "Laforest"=>array("PK-4725","7790","Combinatoire"); ); $leProf=$_POST["nomProf"]; // nomProf dans le formulaire if (isset($profs[$leProf][0]) ){ echo "Nom du professeur: ". $leProf." "; echo "Bureau: ". $profs[$leProf][0]." "; echo "Téléphone: ". $profs[$leProf][1]." "; echo "Domaine: ". $profs[$leProf][2]." "; } else { echo "Ce prof n'existe pas !"; } ?> chercher2.php

Ajax24 A. Obaid - Programmation web (INF2005) Envoi de la réponse en XML l Le serveur peut lire les données d'un fichier XML. l Le serveur peut lire des données d'un fichier et en extraire certains selon les critères de l'usager. l Le serveur peut produire du code XML dynamiquement.

Ajax25 A. Obaid - Programmation web (INF2005) Exemple- Données XML Obaid PK Teleinformatique Reseaux sans fil … Laforest PK Algorithmique Combinatoire profs.xml

Ajax26 A. Obaid - Programmation web (INF2005) Réponses en XML l On récupère les résultat XML grâce à l'objet responseXML. l On identifie les éléments DOM recherchés: lesProfs=reponse.getElementsByTagName("prof"); l On parcourt l'arbre à partir de ces éléments: for (i=0;i<lesProfs.length;i++) { texteHTML=texteHTML+ " "+ lesProfs[i].childNodes[0].nodeValue+" : " + lesProfs[i].childNodes[1].nodeValue+" " } l On place le résultat dans la page HTML: document.getElementById("contenu").innerHTML=texteHTML ajax_xml.html

Ajax27 A. Obaid - Programmation web (INF2005) Reponses XML ajax_xml.html #Contenu { color: red; font-size: x-large; } function obtenirObjectRequeteXML() { if (window.ActiveXObject) { return(new ActiveXObject("Microsoft.XMLHTTP") ); } else if (window.XMLHttpRequest) { return(new XMLHttpRequest()); } else { return(null); } } function envoyerRequeteXML(param) { requete = obtenirObjectRequeteXML(); requete.onreadystatechange = traiterReponseXML; requete.open("GET", "profs.xml", true); requete.send(null); }

Ajax28 A. Obaid - Programmation web (INF2005) function envoyerRequeteXML(param) { requete = obtenirObjectRequeteXML(); requete.onreadystatechange = traiterReponseXML; requete.open("GET", "profs.xml", true); requete.send(null); } function traiterReponseXML() { if ((requete.readyState == 4) && (requete.status == 200)) { reponseEnXML=requete.responseXML; var sortieXML=""; listeElements=reponseEnXML.getElementsByTagName("nom"); for (i=0;i<listeElements.length;i++) { sortieXML=sortieXML + listeElements[i].childNodes[0].nodeValue + " "; } document.getElementById("Contenu").innerHTML=sortieXML; } Reponses XML

Ajax29 A. Obaid - Programmation web (INF2005) Produire des données XML l Le serveur produit du contenu XML l Le client extrait les données qui l'intéressent <?php header("Content-Type: text/xml"); echo " \n"; $fleurs=array("Anemones", "BoutonsdOr", "Chevrefeuille", "Coquelicots", "Crocus", "Jacinthes", "Jonquilles", "Marguerite", "Mimosa", "Narcisse", "Orchidees", "Primeveres", "Tulip es", "Violettes", "Zinnia"); echo " \n"; foreach ($fleurs as $f) { echo " "; echo $f; echo " \n"; } echo " "; ?> fleurs.php

Ajax30 A. Obaid - Programmation web (INF2005) Recevoir des données XML img { width: 100px;} var cimages=new Array(); cimages["Primeveres"]="primevere.jpg"; cimages["Jonquilles"]="jonquille.jpg"; cimages["Narcisse"]="narcisse.jpg"; cimages["Tulipes"]="tulipe.jpg"; cimages["Jacinthes"]="jacinthe.jpg"; cimages["Crocus"]="crocus.jpg"; … var lesFleurs; function cherche() { var requete = new XMLHttpRequest(); requete.onreadystatechange = function(){ if(requete.readyState==4 && requete.status==200) { xmlDoc = requete.responseXML; lesFleurs = xmlDoc.getElementsByTagName("fleur"); rangerFleurs(); }} fleurs.html

Ajax31 A. Obaid - Programmation web (INF2005) Recevoir des données XML requete.open("GET", "fleurs.php", true); requete.send(null); } function rangerFleurs(){ var listeFleurs ; listeFleurs=" " ; var n, i=1; for (n = 0; n < lesFleurs.length; n++ ) { var uneFleur = lesFleurs[n].firstChild.nodeValue; var photo="photos/"+cimages[uneFleur]; listeFleurs += " " + uneFleur + " "+ " "; if (i%4==0) listeFleurs+= " "; i++; } listeFleurs = listeFleurs + " " ; document.getElementById("conteneur").innerHTML=listeFleurs; } … fleurs.html

Ajax32 A. Obaid - Programmation web (INF2005) Invocation par saisie partielle l On peut activer la recherche dans un document XML en utilisant une partie d'un nom –Comme Google suggest l On utilise l'événement on keyUp –Des qu'on entre un caractère on récupère le contenu courant d'un champ Nom:

Ajax33 A. Obaid - Programmation web (INF2005) Récupération de données l Pour retrouver les éléments sur la base d'un contenu partiel dans le serveur (PHP) on utilise la méthode substr() –Pour retrouve un donne partielle fournie par le client dans une valeurs. if(substr($valeur,0, strlen($donnee))==$donnee) { … }

Ajax34 A. Obaid - Programmation web (INF2005) Exemple l Le client émet une donnée partielle (de noms de fleurs) et attend les résultats de manière asynchrone. l Le serveur émet les noms de fleurs qui commencent par cette donnée partielle l Le client affiche ces fleurs et les images qui leur sont associées. fleurs1.html fleurs1.php