Académique Documents
Professionnel Documents
Culture Documents
2017-2018
Sommaire
Introduction
L’objet XmlHttpRequest
Ajax et base de données
Bibliographie
function getXhr()
{var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
{try
{xhr = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e)
{xhr = new ActiveXObject("Microsoft.XMLHTTP");}
}
else // XMLHttpRequest non supporté par le navigateur
{alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
}
Méthode Explication
open(méthode,url,flag) Ouvre la connexion avec le serveur.
méthode : "GET" ou "POST"
url : url à laquelle on va envoyer la requête.
Si la méthode est GET, on met les paramètres dans l'url.
Flag : true = dialogue asynchrone
false = dialogue synchrone
setRequestHeader(nom, Assigne une valeur à un header HTTP qui sera envoyé lors
valeur) de la requête.
pour un POST : nom = "Content-Type" , valeur :
"application/x-www-form-urlencoded"
send("params") Envoi la requête au serveur.
méthode GET : on met null en paramètre.
méthode POST : on met les paramètres a envoyer, sous la
forme :
"nomparam1=valeurparam1&nomparam2=valeurparam2".
abort() Abandonne la requête.
<html>
<head>
<title>Ajax en mode Synchrone</title>
<script type='text/JavaScript'>
//créer une instance de XMLHttpRequest
function getXhr()
{var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
{try
{xhr = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e)
{xhr = new ActiveXObject("Microsoft.XMLHTTP");}
}
else
{// XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
}
K. M. BROU Technologies XML 12
II. L’objet XmlHttpRequest
//Méthode qui sera appelée sur le click du bouton
function go(element)
{var xhr = getXhr();
xhr.open("GET","codePhp.php",false);
xhr.send(null);
afficher(xhr.responseText, element);
}
function afficher(xhr, element)
{element.innerHTML = xhr;}
</script>
</head>
<body>
<p><span id="message"> L'affichage du script PHP sera inséré ici.</span></p>
<hr />
<FORM name="ajax" method="POST" action="">
<input type='button' value='Envoyer' onclick='go(document.getElementById("message"))' />
</FORM>
</body>
</html>
Propriété readyState
Contient les états de l’objet XmlHttpRequest.
0 : Non initialisé.
1 : Ouverture (open() vient de s'exécuter).
2 : Envoyé (send() vient de s'exécuter).
3 : En cours (des données sont en train d'arriver).
4 -> Prêt (toutes les données sont chargées).
K. M. BROU Technologies XML 16
II. L’objet XmlHttpRequest
Le choix entre synchrone et asynchrone est effectué
dans dans le dernier paramètre méthode open() de
l’objet XMLHttpRequest :
True pour asynchrone ;
False pour synchrone.
Exemple : Afficher un message
Le message à afficher est stocké dans un fichier PHP.
Le message est modifier, réaffiché sans recharger la page Web.
ex2.html, ex2a.html, codeJS2.js, codePhp.php
<html>
<head>
<title>Ajax en mode Asynchrone</title>
<script type="text/javascript" src="codeJS2.js"></script>
</head>
<body>
<p><span id="message"> L'affichage du script PHP sera inséré ici.</span></p>
<hr />
<FORM name="ajax" method="POST" action="">
<input type='button' value='Envoyer' onclick='go(document.getElementById("message"))' />
</FORM>
</body>
K. M. BROU </html> Technologies XML 17
II. L’objet XmlHttpRequest
function go(element) // Méthode qui sera appelée sur le click du bouton
{var xhr = getXhr()
// On défini ce qu'on va faire quand on aura la réponse du serveur
xhr.onreadystatechange = function()
{// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4)
{if (xhr.status == 200)
{afficher(xhr.responseText, element);}
else
alert("Error: returned status code " + xhr.status + " " + xhr.statusText);
}
}
xhr.open("GET","codePhp.php", true);
xhr.send(null);
}
<?php
echo "Bonjour BROU Konan";
?>
<?xml version="1.0"?>
<personne>
<nom>BROU</nom>
<prenom>Konan Marcellin</prenom>
</personne>
4. ex4.html
<html>
<head>
<title>Ajax en mode Asynchrone</title>
<script type="text/javascript" src="codeJS3.js"></script>
</head>
<body>
<h3>Traitement d'un document XML/BD</h3>
<p><span id="message"> L'affichage du script PHP sera inséré ici.</span></p>
<hr />
<FORM name="ajax" method="POST" action="">
<input type='button' value='Envoyer' onclick='go(document.getElementById("message"))' />
</FORM>
</body>
</html>
//Affichage du resultat
function afficher(xhr, element)
{var docXML= xhr.responseXML;
var n = docXML.getElementsByTagName("nom");
var p = docXML.getElementsByTagName("prenom");
data = "Bonjour " + n.item(0).firstChild.data + " " + p.item(0).firstChild.data;
element.innerHTML = data;
}
K. M. BROU Technologies XML 30
III. Ajax et base de données
Exécution