SlideShare une entreprise Scribd logo
Introduction à AJAX
M. DIENG Abdoulaye
adieng@gmail.com
Objectif général
Comprendre le principe de fonctionnement d'AJAX
Objectifs opérationnels
• Connaître les avantages et inconvénients d’AJAX
• Connaître les attributs et méthodes de l’objet XMLHttpRequest
• Construire une interaction AJAX
Sommaire
1. Présentation d’AJAX
a) Définition
b) Intérêt
c) Fonctionnement
2. Objet XMLHttpRequest
3. Construction d’une requête
Présentation d’AJAX
définition
• Inventé début 2005 par Jesse J. Garrett, le terme AJAX
(Asynchronous JavaScript And XML) désigne la conjonction
des technologies suivantes :
– XHTML pour la structuration sémantique du contenu d’une
page Web;
– CSS pour la mise en forme du contenu d’une page Web;
– DOM pour la manipulation des éléments d’une page Web;
– L’objet XMLHttpRequest de JavaScript qui permet d’assurer
des transferts asynchrones entre le client et le serveur;
– XML pour les formats de données à transférer;
– JavaScript qui permet l’interaction de ces différentes
technologies.
Présentation d’AJAX
avantages
• Rechargement partiel de la page
l’objet XMLHttpRequest assure la récupération et l’insertion
dans la page en cours des seules données à modifier.
• Économie de la bande passante
l’élimination du transfert de nombreuses informations
redondantes, allège fortement le trafic réseau.
• Augmentation de la réactivité de l’application
• Non blocage de l’application pendant le traitement de la
requête
l’échange XMLHttpRequest asynchrone permet à l’internaute
de continuer à travailler pendant de traitement de la requête.
Présentation d’AJAX
inconvénients
• Pas de mémorisation des actions dans l’historique
les différents contenus d’une application Ajax s’affiche
toujours dans la même page.
• Problème d’indexation des contenus
Seul le premier contenu d’une page sera :
– indexé par les moteurs de recherche;
– enregistré comme favoris par les navigateurs.
• Dépendance de l’activation de JavaScript sur le navigateur
Présentation d’AJAX
fonctionnement
Sommaire
1. Présentation d’AJAX
2. Objet XMLHttpRequest
a) Présentation
b) Propriétés
c) Méthodes
3. Construction d’une requête
Objet XMLHttpRequest
présentation
• La communication des applications Ajax avec le serveur
repose essentiellement sur l’objet XMLHttpRequest.
• XMLHttpRequest a d'abord été développé par Microsoft, en
tant qu'objet ActiveX, pour Internet Explorer 5.0. (sep 1998)
• Il a ensuite été repris et implémenté en tant qu’objet
Javascript par les autres navigateurs.
• La création de l'objet se fait différemment selon le navigateur
• Sa création sous IE nécessite de tester plusieurs versions d’IE.
• Toutefois, après la création de l'objet, les méthodes et
propriétés sont les mêmes pour tous les navigateurs.
Objet XMLHttpRequest
quelques méthodes
• abort() : stoppe la requête et réinitialise la valeur de
readyState à 0
• getAllResponseHeaders() : retourne une chaîne de caractères
contenant toutes les en-têtes de réponse
• getResponseHeader(headerField) : retourne la valeur d’un
champ d’en-tête
• open(requestMethod, url, asynchronousFlag) : prépare l’envoi
de la requête
• send(bodyContent) : envoie le corps du message
(éventuellement null par exemple lors de l’exploitation de la
méthode GET)
• setRequestHeader(headerField, headerValue) : ajoute une
paire champ/valeur à l’en-tête lors de l’envoi de la requête
Objet XMLHttpRequest
quelques propriétés
• onreadystatechange : notifie de l’état de la requête et de ses
évènements (associée à une fonction de traitement).
• readyState : état de l’objet XHR au cours de la requête
(0 : non initialisé, 1 : requête en cours d’envoi, 2 : requête
envoyée, 3 : réponse en cours de réception, 4 : complétude de
la réponse).
• responseText : réponse du serveur sous format chaîne de
caractères.
• responseXML : réponse du serveur sous format XML.
• status : code de la réponse HTTP reçue depuis le serveur.
• statusText : libellé du code de la réponse HTTP reçue depuis le
serveur.
Sommaire
1. Présentation d’AJAX
2. Objet XMLHttpRequest
3. Construction d’une interaction AJAX
a) Création d'une instance de l'objet XMLHttpRequest
b) Désignation de la fonction de rappel
c) Initialisation de la requête
d) Envoi de la requête
e) Traitement de la requête par le serveur
f) Traitement de la réponse
Construction d’une interaction AJAX
les étapes
1. Création d’un déclencheur et d’au moins une zone ou sera
affichée la réponse de l'action utilisateur (fichier .html)
2. Création de l'objet XMLHttpRequest
(fichier .js à inclure dans le fichier .html)
3. Désignation de la fonction de rappel (ou callback)
(code javascript à inclure dans le fichier .html)
4. Initialisation de la requête
(code javascript à inclure dans le fichier .html)
5. Envoi de la requête
(code javascript à inclure dans le fichier .html)
6. Traitement de la requête par le serveur
(fichier .php dans le même domaine que le fichier .html)
7. Traitement de la réponse par le navigateur
(fonction javascript à inclure dans le fichier .html)
Construction d’une interaction AJAX
Création d’un déclencheur et d’une zone d’affichage de la réponse
Cette étape consiste à la création d’une page (X)HTML intégrant :
• un déclencheur (un lien, bouton ou n'importe quel contrôle que
l'utilisateur peut manipuler pour lancer une action).
Exemple :
• Une ou +sieurs zones munie chacune d’un identifiant unique où
sera affichée la réponse de l'action de l’utilisateur.
Exemple :
<p> Entrez un entier SVP :<input id="entier" /> </p>
<p>
<input type="button" onclick="parite();" value="pair ou impair?" />
</p>
<p>
<span id="nbr">...</span> est <span id="resultat">...</span>
</p>
Construction d’une interaction AJAX
Création de l'objet XMLHttpRequest
function creationXHR() {
var resultat=null;
try { // Test pour les navigateurs : Mozilla, Opera, ...
resultat= new XMLHttpRequest();
}
catch (Error) {
try { // Test pour les navigateurs Internet Explorer > 5.0
resultat= new ActiveXObject("Msxml2.XMLHTTP");
}
catch (Error) {
try { // Test pour le navigateur Internet Explorer 5.0
resultat= new ActiveXObject("Microsoft.XMLHTTP");
}
catch (Error) {
resultat= null;
}
}
}
return resultat;
}
L’objet XMLHttpRequest est créé par l’instruction:
objetXHR = creationXHR()
Construction d’une interaction AJAX
désignation de la fonction de rappel
• La fonction de rappel (ou callback) devra être appelée à
chaque fois que l’état de l’objet XMLHttpRequest change
(requête en cours d’envoi, requête envoyée, réponse en cours
de réception, complétude de la réponse).
• Pour cela, on renseigne la propriété onreadystatechange de
l'objet.
Par exemple :
objetXHR.onreadystatechange = actualiserPage;
• Cette fonction est surtout utilisée pour le traitement de la
réponse complète du serveur
Construction d’une interaction AJAX
initialisation de la requête
• La requête est initialisée par la méthode open() qui reçoit :
– la méthode d’envoi (GET ou POST) ;
– l'adresse du programme chargé de traiter la requête, ainsi
qu’éventuellement, la liste des paramètres à passer à celui-
ci, dans le cas où la requête est effectuée en mode GET ;
– false(synchrone) ou true (asynchrone : mode par défaut).
• Exemple avec POST :
objetXHR.open("post","parite.php",true);
• Exemple avec GET :
var entier=document.getElementById("entier").value;
objetXHR.open("get","parite.php?entier="+entier,true);
Construction d’une interaction AJAX
envoi de la requête
• La requête est envoyée par la méthode send() qui reçoit :
– ou bien NULL si la méthode d’envoi est GET ;
– ou bien la liste des paramètres à passer au programme
chargé de traiter la requête, si la méthode d’envoi est POST.
• Exemple avec GET :
objetXHR.send(NULL);
• Exemple avec POST :
var entier=document.getElementById("entier").value;
objetXHR.setRequestHeader("Content-Type","application/x-
www-form-urlencoded");
objetXHR.send("entier="+entier);
Construction d’une interaction AJAX
traitement de la requête par le serveur
• La requête peut être traitée par un script .php
• Exemple : (parite.php)
<?php
header("Content-Type: text/plain");//la réponse est du texte
if(!empty($_REQUEST)){
extract($_REQUEST);
if($entier%2==0){
echo 'pair';
}
else{
echo 'impair';
}
}
?>
Construction d’une interaction AJAX
traitement de la réponse par le navigateur
• La réponse est traitée par la fonction de rappel.
• Exemple :
function actualiserPage() {
if (objetXHR.readyState == 4) {
if (objetXHR.status == 200) {
var entier= document.getElementById("entier");
var nbr= document.getElementById("nbr");
var resultat= document.getElementById("resultat");
nbr.innerHTML=entier;
resultat.innerHTML=objetXHR.responseText;
}
}
}

Contenu connexe

PDF
Ajax (Asynchronous JavaScript and XML)
Abdelouahed Abdou
 
PPT
Introduction To PHP
Shweta A
 
PPTX
What is Ajax technology?
JavaTpoint.Com
 
PPTX
jQuery
Jay Poojara
 
PPTX
Servlets
ZainabNoorGul
 
PPT
PHP - Introduction to PHP AJAX
Vibrant Technologies & Computers
 
PDF
Nodejs presentation
Arvind Devaraj
 
PPT
Ajax Ppt 1
JayaPrakash.m
 
Ajax (Asynchronous JavaScript and XML)
Abdelouahed Abdou
 
Introduction To PHP
Shweta A
 
What is Ajax technology?
JavaTpoint.Com
 
jQuery
Jay Poojara
 
Servlets
ZainabNoorGul
 
PHP - Introduction to PHP AJAX
Vibrant Technologies & Computers
 
Nodejs presentation
Arvind Devaraj
 
Ajax Ppt 1
JayaPrakash.m
 

Tendances (20)

PDF
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
PPTX
Introduction à Laravel
Abdoulaye Dieng
 
PPTX
Initiation à Express js
Abdoulaye Dieng
 
PPTX
Ajax ppt - 32 slides
Smithss25
 
PDF
Collections In Java
Binoj T E
 
PPT
Ajax Presentation
alaa.moustafa
 
PDF
Javascript
Momentum Design Lab
 
PPT
Tomcat server
Utkarsh Agarwal
 
PPTX
cours javascript.pptx
YaminaGh1
 
PPTX
Hibernate ppt
Aneega
 
PPT
JavaScript & Dom Manipulation
Mohammed Arif
 
PDF
Support de cours entrepise java beans ejb m.youssfi
ENSET, Université Hassan II Casablanca
 
PPT
Xpath presentation
Alfonso Gabriel López Ceballos
 
PDF
Cours java avance avancé thread arraylist
Houssem Hamrouni
 
PPTX
Introduction to java 8 stream api
Vladislav sidlyarevich
 
PDF
React js
Rajesh Kolla
 
PDF
JavaScript - Chapter 10 - Strings and Arrays
WebStackAcademy
 
PDF
Support Java Avancé Troisième Partie
ENSET, Université Hassan II Casablanca
 
PDF
ReactJS presentation
Thanh Tuong
 
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
Introduction à Laravel
Abdoulaye Dieng
 
Initiation à Express js
Abdoulaye Dieng
 
Ajax ppt - 32 slides
Smithss25
 
Collections In Java
Binoj T E
 
Ajax Presentation
alaa.moustafa
 
Tomcat server
Utkarsh Agarwal
 
cours javascript.pptx
YaminaGh1
 
Hibernate ppt
Aneega
 
JavaScript & Dom Manipulation
Mohammed Arif
 
Support de cours entrepise java beans ejb m.youssfi
ENSET, Université Hassan II Casablanca
 
Cours java avance avancé thread arraylist
Houssem Hamrouni
 
Introduction to java 8 stream api
Vladislav sidlyarevich
 
React js
Rajesh Kolla
 
JavaScript - Chapter 10 - Strings and Arrays
WebStackAcademy
 
Support Java Avancé Troisième Partie
ENSET, Université Hassan II Casablanca
 
ReactJS presentation
Thanh Tuong
 
Publicité

En vedette (20)

ODP
Ajax et Accessibilite
mikeh
 
PPTX
Introduction au Jquery
Abdoulaye Dieng
 
PPTX
Csharp2 : classes et objets
Abdoulaye Dieng
 
PPTX
php2 : formulaire-session-PDO
Abdoulaye Dieng
 
PPTX
introduction à MongoDB
Abdoulaye Dieng
 
PPTX
Mieux Filtrer ses listes WordPress avec Ajax et WP_Query
Symetris
 
PPT
Présentation jQuery pour débutant
Stanislas Chollet
 
PDF
Ajax en Java - GTI780 & MTI780 - ETS - A09
Claude Coulombe
 
PPTX
Module 7 intégration d'ajax et les services web dans les applications asp.net
Mohammed Amine Mostefai
 
PDF
Maridajes de la cerveza
Micaela Halsband
 
PDF
Enfants et Santé - Dossier de Presse - Mai 2012
Agence Mayflower
 
PPT
Green Monkeys - le covoiturage en toute liberté
elbing
 
DOC
Ex.le gérondif
helenaaldaz
 
DOC
Le bateau en fête, le côté amusant de Venise
Walter Fano
 
PDF
Juegos de guerra en los negocios
Giovanni Beltrán Mejía
 
PPT
Inversión en promoción: qué hacemos, cuanto invertimos, qué obtenemos y cómo ...
Centro de Transfusión Sanguínea de Córdoba
 
PPTX
Si leo la vida con las tic’s...
elizapiedrahita
 
PPTX
Acompañamiento tutorial en e mediador
Rafael Hernandez Castellanos
 
PDF
Brides 27-31juillet-2015
Daniel Alouidor
 
Ajax et Accessibilite
mikeh
 
Introduction au Jquery
Abdoulaye Dieng
 
Csharp2 : classes et objets
Abdoulaye Dieng
 
php2 : formulaire-session-PDO
Abdoulaye Dieng
 
introduction à MongoDB
Abdoulaye Dieng
 
Mieux Filtrer ses listes WordPress avec Ajax et WP_Query
Symetris
 
Présentation jQuery pour débutant
Stanislas Chollet
 
Ajax en Java - GTI780 & MTI780 - ETS - A09
Claude Coulombe
 
Module 7 intégration d'ajax et les services web dans les applications asp.net
Mohammed Amine Mostefai
 
Maridajes de la cerveza
Micaela Halsband
 
Enfants et Santé - Dossier de Presse - Mai 2012
Agence Mayflower
 
Green Monkeys - le covoiturage en toute liberté
elbing
 
Ex.le gérondif
helenaaldaz
 
Le bateau en fête, le côté amusant de Venise
Walter Fano
 
Juegos de guerra en los negocios
Giovanni Beltrán Mejía
 
Inversión en promoción: qué hacemos, cuanto invertimos, qué obtenemos y cómo ...
Centro de Transfusión Sanguínea de Córdoba
 
Si leo la vida con las tic’s...
elizapiedrahita
 
Acompañamiento tutorial en e mediador
Rafael Hernandez Castellanos
 
Brides 27-31juillet-2015
Daniel Alouidor
 
Publicité

Similaire à Introduction à ajax (20)

PPTX
Requêtes HTTP synchrones et asynchrones
Abdoulaye Dieng
 
PDF
cours web developpement statique AJAX 2024
YounesOuladSayad1
 
PDF
ajqxè_àànndkllllllllllllllllllllllllllllllllllllllllll
Elalami8
 
PPT
0554-programmation-web-ajax programmation web ajax
Marouane MM
 
PDF
ajax.pdf
Jaouad Assabbour
 
PDF
Ajax GTI780 & MTI780 ETS A09
Claude Coulombe
 
KEY
Introduction aux RIA (Rich Internet Applications)
Tugdual Grall
 
PPTX
JSTLcourensatangerpourlesetudiantsdu2emeanneeecole.pptx
OussamaZaoui7
 
PPT
MEDBOULARESSMPIIIIIIIIIIIIIIIIIIIIIII.ppt
medmed446132
 
PDF
Ajax - GTI780 & MTI780 - ETS - A08
Claude Coulombe
 
PPTX
react-slides.ppx (2) (1).pptx react presentation basic
zineblahib2
 
PPTX
Android Lab Test : La connectivité réseau avec HTTP (français)
Bruno Delb
 
PPTX
Servlets et JSP
Heithem Abbes
 
PDF
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
Horacio Gonzalez
 
PDF
Ajax en Java - GTI780 & MTI780 - ETS - A08
Claude Coulombe
 
PDF
Support JEE Servlet Jsp MVC M.Youssfi
ENSET, Université Hassan II Casablanca
 
PPT
C5 Javascript
Vlad Posea
 
PPT
C5 Javascript French
Vlad Posea
 
PDF
Services rest & jersey
Mathieu Hicauber
 
PDF
Serveur http
Kokou Gaglo
 
Requêtes HTTP synchrones et asynchrones
Abdoulaye Dieng
 
cours web developpement statique AJAX 2024
YounesOuladSayad1
 
ajqxè_àànndkllllllllllllllllllllllllllllllllllllllllll
Elalami8
 
0554-programmation-web-ajax programmation web ajax
Marouane MM
 
Ajax GTI780 & MTI780 ETS A09
Claude Coulombe
 
Introduction aux RIA (Rich Internet Applications)
Tugdual Grall
 
JSTLcourensatangerpourlesetudiantsdu2emeanneeecole.pptx
OussamaZaoui7
 
MEDBOULARESSMPIIIIIIIIIIIIIIIIIIIIIII.ppt
medmed446132
 
Ajax - GTI780 & MTI780 - ETS - A08
Claude Coulombe
 
react-slides.ppx (2) (1).pptx react presentation basic
zineblahib2
 
Android Lab Test : La connectivité réseau avec HTTP (français)
Bruno Delb
 
Servlets et JSP
Heithem Abbes
 
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
Horacio Gonzalez
 
Ajax en Java - GTI780 & MTI780 - ETS - A08
Claude Coulombe
 
Support JEE Servlet Jsp MVC M.Youssfi
ENSET, Université Hassan II Casablanca
 
C5 Javascript
Vlad Posea
 
C5 Javascript French
Vlad Posea
 
Services rest & jersey
Mathieu Hicauber
 
Serveur http
Kokou Gaglo
 

Plus de Abdoulaye Dieng (20)

PPTX
Introduction à React
Abdoulaye Dieng
 
PPTX
Fondamentaux du Référencement naturel
Abdoulaye Dieng
 
PPTX
Introduction à Symfony
Abdoulaye Dieng
 
PPTX
Panorama des Technologies mobiles
Abdoulaye Dieng
 
PPTX
Prise en main de WordPress
Abdoulaye Dieng
 
PPTX
Initiation à Bootstrap
Abdoulaye Dieng
 
PPTX
Fondamentaux d’une API REST
Abdoulaye Dieng
 
PPTX
Introduction à Angular
Abdoulaye Dieng
 
PPTX
Introduction à JavaScript
Abdoulaye Dieng
 
PPTX
Introduction à l’orienté objet en Python
Abdoulaye Dieng
 
PPTX
Introduction à Python
Abdoulaye Dieng
 
PPTX
Introduction à React JS
Abdoulaye Dieng
 
PPTX
Initiation à l'algorithmique
Abdoulaye Dieng
 
PPTX
Introduction à Symfony
Abdoulaye Dieng
 
PPTX
Initiation à Bootstrap
Abdoulaye Dieng
 
PPTX
Introduction à jQuery
Abdoulaye Dieng
 
PPT
Introduction à JavaScript
Abdoulaye Dieng
 
PPTX
Initiation à l'algorithmique
Abdoulaye Dieng
 
PPTX
Introduction à HTML 5
Abdoulaye Dieng
 
PPTX
Introduction à AngularJS
Abdoulaye Dieng
 
Introduction à React
Abdoulaye Dieng
 
Fondamentaux du Référencement naturel
Abdoulaye Dieng
 
Introduction à Symfony
Abdoulaye Dieng
 
Panorama des Technologies mobiles
Abdoulaye Dieng
 
Prise en main de WordPress
Abdoulaye Dieng
 
Initiation à Bootstrap
Abdoulaye Dieng
 
Fondamentaux d’une API REST
Abdoulaye Dieng
 
Introduction à Angular
Abdoulaye Dieng
 
Introduction à JavaScript
Abdoulaye Dieng
 
Introduction à l’orienté objet en Python
Abdoulaye Dieng
 
Introduction à Python
Abdoulaye Dieng
 
Introduction à React JS
Abdoulaye Dieng
 
Initiation à l'algorithmique
Abdoulaye Dieng
 
Introduction à Symfony
Abdoulaye Dieng
 
Initiation à Bootstrap
Abdoulaye Dieng
 
Introduction à jQuery
Abdoulaye Dieng
 
Introduction à JavaScript
Abdoulaye Dieng
 
Initiation à l'algorithmique
Abdoulaye Dieng
 
Introduction à HTML 5
Abdoulaye Dieng
 
Introduction à AngularJS
Abdoulaye Dieng
 

Introduction à ajax

  • 2. Objectif général Comprendre le principe de fonctionnement d'AJAX
  • 3. Objectifs opérationnels • Connaître les avantages et inconvénients d’AJAX • Connaître les attributs et méthodes de l’objet XMLHttpRequest • Construire une interaction AJAX
  • 4. Sommaire 1. Présentation d’AJAX a) Définition b) Intérêt c) Fonctionnement 2. Objet XMLHttpRequest 3. Construction d’une requête
  • 5. Présentation d’AJAX définition • Inventé début 2005 par Jesse J. Garrett, le terme AJAX (Asynchronous JavaScript And XML) désigne la conjonction des technologies suivantes : – XHTML pour la structuration sémantique du contenu d’une page Web; – CSS pour la mise en forme du contenu d’une page Web; – DOM pour la manipulation des éléments d’une page Web; – L’objet XMLHttpRequest de JavaScript qui permet d’assurer des transferts asynchrones entre le client et le serveur; – XML pour les formats de données à transférer; – JavaScript qui permet l’interaction de ces différentes technologies.
  • 6. Présentation d’AJAX avantages • Rechargement partiel de la page l’objet XMLHttpRequest assure la récupération et l’insertion dans la page en cours des seules données à modifier. • Économie de la bande passante l’élimination du transfert de nombreuses informations redondantes, allège fortement le trafic réseau. • Augmentation de la réactivité de l’application • Non blocage de l’application pendant le traitement de la requête l’échange XMLHttpRequest asynchrone permet à l’internaute de continuer à travailler pendant de traitement de la requête.
  • 7. Présentation d’AJAX inconvénients • Pas de mémorisation des actions dans l’historique les différents contenus d’une application Ajax s’affiche toujours dans la même page. • Problème d’indexation des contenus Seul le premier contenu d’une page sera : – indexé par les moteurs de recherche; – enregistré comme favoris par les navigateurs. • Dépendance de l’activation de JavaScript sur le navigateur
  • 9. Sommaire 1. Présentation d’AJAX 2. Objet XMLHttpRequest a) Présentation b) Propriétés c) Méthodes 3. Construction d’une requête
  • 10. Objet XMLHttpRequest présentation • La communication des applications Ajax avec le serveur repose essentiellement sur l’objet XMLHttpRequest. • XMLHttpRequest a d'abord été développé par Microsoft, en tant qu'objet ActiveX, pour Internet Explorer 5.0. (sep 1998) • Il a ensuite été repris et implémenté en tant qu’objet Javascript par les autres navigateurs. • La création de l'objet se fait différemment selon le navigateur • Sa création sous IE nécessite de tester plusieurs versions d’IE. • Toutefois, après la création de l'objet, les méthodes et propriétés sont les mêmes pour tous les navigateurs.
  • 11. Objet XMLHttpRequest quelques méthodes • abort() : stoppe la requête et réinitialise la valeur de readyState à 0 • getAllResponseHeaders() : retourne une chaîne de caractères contenant toutes les en-têtes de réponse • getResponseHeader(headerField) : retourne la valeur d’un champ d’en-tête • open(requestMethod, url, asynchronousFlag) : prépare l’envoi de la requête • send(bodyContent) : envoie le corps du message (éventuellement null par exemple lors de l’exploitation de la méthode GET) • setRequestHeader(headerField, headerValue) : ajoute une paire champ/valeur à l’en-tête lors de l’envoi de la requête
  • 12. Objet XMLHttpRequest quelques propriétés • onreadystatechange : notifie de l’état de la requête et de ses évènements (associée à une fonction de traitement). • readyState : état de l’objet XHR au cours de la requête (0 : non initialisé, 1 : requête en cours d’envoi, 2 : requête envoyée, 3 : réponse en cours de réception, 4 : complétude de la réponse). • responseText : réponse du serveur sous format chaîne de caractères. • responseXML : réponse du serveur sous format XML. • status : code de la réponse HTTP reçue depuis le serveur. • statusText : libellé du code de la réponse HTTP reçue depuis le serveur.
  • 13. Sommaire 1. Présentation d’AJAX 2. Objet XMLHttpRequest 3. Construction d’une interaction AJAX a) Création d'une instance de l'objet XMLHttpRequest b) Désignation de la fonction de rappel c) Initialisation de la requête d) Envoi de la requête e) Traitement de la requête par le serveur f) Traitement de la réponse
  • 14. Construction d’une interaction AJAX les étapes 1. Création d’un déclencheur et d’au moins une zone ou sera affichée la réponse de l'action utilisateur (fichier .html) 2. Création de l'objet XMLHttpRequest (fichier .js à inclure dans le fichier .html) 3. Désignation de la fonction de rappel (ou callback) (code javascript à inclure dans le fichier .html) 4. Initialisation de la requête (code javascript à inclure dans le fichier .html) 5. Envoi de la requête (code javascript à inclure dans le fichier .html) 6. Traitement de la requête par le serveur (fichier .php dans le même domaine que le fichier .html) 7. Traitement de la réponse par le navigateur (fonction javascript à inclure dans le fichier .html)
  • 15. Construction d’une interaction AJAX Création d’un déclencheur et d’une zone d’affichage de la réponse Cette étape consiste à la création d’une page (X)HTML intégrant : • un déclencheur (un lien, bouton ou n'importe quel contrôle que l'utilisateur peut manipuler pour lancer une action). Exemple : • Une ou +sieurs zones munie chacune d’un identifiant unique où sera affichée la réponse de l'action de l’utilisateur. Exemple : <p> Entrez un entier SVP :<input id="entier" /> </p> <p> <input type="button" onclick="parite();" value="pair ou impair?" /> </p> <p> <span id="nbr">...</span> est <span id="resultat">...</span> </p>
  • 16. Construction d’une interaction AJAX Création de l'objet XMLHttpRequest function creationXHR() { var resultat=null; try { // Test pour les navigateurs : Mozilla, Opera, ... resultat= new XMLHttpRequest(); } catch (Error) { try { // Test pour les navigateurs Internet Explorer > 5.0 resultat= new ActiveXObject("Msxml2.XMLHTTP"); } catch (Error) { try { // Test pour le navigateur Internet Explorer 5.0 resultat= new ActiveXObject("Microsoft.XMLHTTP"); } catch (Error) { resultat= null; } } } return resultat; } L’objet XMLHttpRequest est créé par l’instruction: objetXHR = creationXHR()
  • 17. Construction d’une interaction AJAX désignation de la fonction de rappel • La fonction de rappel (ou callback) devra être appelée à chaque fois que l’état de l’objet XMLHttpRequest change (requête en cours d’envoi, requête envoyée, réponse en cours de réception, complétude de la réponse). • Pour cela, on renseigne la propriété onreadystatechange de l'objet. Par exemple : objetXHR.onreadystatechange = actualiserPage; • Cette fonction est surtout utilisée pour le traitement de la réponse complète du serveur
  • 18. Construction d’une interaction AJAX initialisation de la requête • La requête est initialisée par la méthode open() qui reçoit : – la méthode d’envoi (GET ou POST) ; – l'adresse du programme chargé de traiter la requête, ainsi qu’éventuellement, la liste des paramètres à passer à celui- ci, dans le cas où la requête est effectuée en mode GET ; – false(synchrone) ou true (asynchrone : mode par défaut). • Exemple avec POST : objetXHR.open("post","parite.php",true); • Exemple avec GET : var entier=document.getElementById("entier").value; objetXHR.open("get","parite.php?entier="+entier,true);
  • 19. Construction d’une interaction AJAX envoi de la requête • La requête est envoyée par la méthode send() qui reçoit : – ou bien NULL si la méthode d’envoi est GET ; – ou bien la liste des paramètres à passer au programme chargé de traiter la requête, si la méthode d’envoi est POST. • Exemple avec GET : objetXHR.send(NULL); • Exemple avec POST : var entier=document.getElementById("entier").value; objetXHR.setRequestHeader("Content-Type","application/x- www-form-urlencoded"); objetXHR.send("entier="+entier);
  • 20. Construction d’une interaction AJAX traitement de la requête par le serveur • La requête peut être traitée par un script .php • Exemple : (parite.php) <?php header("Content-Type: text/plain");//la réponse est du texte if(!empty($_REQUEST)){ extract($_REQUEST); if($entier%2==0){ echo 'pair'; } else{ echo 'impair'; } } ?>
  • 21. Construction d’une interaction AJAX traitement de la réponse par le navigateur • La réponse est traitée par la fonction de rappel. • Exemple : function actualiserPage() { if (objetXHR.readyState == 4) { if (objetXHR.status == 200) { var entier= document.getElementById("entier"); var nbr= document.getElementById("nbr"); var resultat= document.getElementById("resultat"); nbr.innerHTML=entier; resultat.innerHTML=objetXHR.responseText; } } }