XMLHTTPRequest
Introduction
Le problème est survenu quand j'ai voulu requeter sur le serveur sans recharger la page, l'ouvrir dans une pop-up ou recourir à une astuce, un bidouillage.
C'est alors que j'ai découvert un tutoriel un tutoriel sur les xmlhttpRequest.Etant donné la rareté de sa présence, je me permet de diffuser à mon expérience.
xmlhttpRequest est utilisable pour IE et FIREFOX.
Objet : xmlhttpRequest
L'objet xmlhttpRequest permet de récupérer des données des données xml mais aussi tout un tas de différentes informations.
Il faut noter que l'instanciation de cet objet est défférent selon le navigateur.
var xhr_object=null;
if(window.XMLHttpRequest){//FireFox
xhr_object = new XMLHttpRequest();
}else if (window.ActiveXObject){
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
}else{//XMLHTTPRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("GET",location.href,false);
//méthode de transmission des données
//URL
//mode de transmission de la requete
xhr_object.send(null);
//Execution de la requete
if(xhr_object.readyState == 4) alert("Requete effectué !");
//Quand requete terminée
Exploitation : xmlhttpRequest
On ne demande pour l'instant rien à notre requête.Nous allons exploiter le resultat de objet contenu dans xhr_object.responseText ou
xhr_object.responseXML.On utilisera l'un ou l'autre suivant le format du résultat.Changeons notre code, pour afficher le contenu de l'information
du serveur.
Le résultat est le source de notre page.De là, on peut effectuer tout un tas d'opération.
var xhr_object=null;
if(window.XMLHttpRequest){//FireFox
xhr_object = new XMLHttpRequest();
}else if (window.ActiveXObject){
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
}else{//XMLHTTPRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("GET",location.href,false);
//méthode de transmission des données
//URL
//mode de transmission de la requete
xhr_object.send(null);
//Execution de la requete
if(xhr_object.readyState == 4) alert(xhr_object.responseText);
//Quand requete terminée
Synchrone ou Asynchrone
Jusqu'à maintenant, nous avons utilisé le mode synchrone.La contre-partie du mode synchrone est que tant que la requête n'a pas abouti
notre navigateur sera bloqué.
Nous allons donc recourir au mode asynchrone.Après avoir envoyé la requête via send, le script continue de se dérouler.Il faut bien évidement
ajouter un écouteur qui detectera la fin de la requête.C'est le rôle de la fonction onreadystatechange.
Présentation des états de la requête :
Valeur | Description |
0 | Non initialisé |
1 | Début du transfert des données |
2 | Données transférées |
3 | Données en partie accessible |
4 | Données complétement accessibles |
var xhr_object=null;
if(window.XMLHttpRequest){//FireFox
xhr_object = new XMLHttpRequest();
}else if (window.ActiveXObject){
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
}else{//XMLHTTPRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("GET",location.href,false);
//méthode de transmission des données
//URL
//mode de transmission de la requete
xhr_object.onreadystatechange=function(){
if(xhr_object.readyState == 4) alert(xhr_object.responseText);
//Quand requete terminée
}
xhr_object.send(null);
//Execution de la requete