dimanche 20 mars 2011

Construire une requête en Ajax




if (window.XMLHttpRequest)                 //  Objet de la fenêtre courant
{ 
    xhr = new XMLHttpRequest();     //  Firefox, Safari, ...
} 
else 
   if (window.ActiveXObject)                    //  Version Active
   {
      xhr = new ActiveXObject("Microsoft.XMLHTTP");   // Internet Explorer 
   }
ou plus simplement, on peut utiliser les exceptions:
try {
   xhr = new ActiveXObject("Microsoft.XMLHTTP");    // Essayer Internet Explorer 
}
catch(e)   // Echec{
  xhr = new XMLHttpRequest():  // Autres navigateurs
}

Seconde étape: attendre la réponse

Le traitement de la réponse et les traitements qui suivent sont inclus dans une fonction, et la valeur de retour de cette fonction sera assignée à l'attribut onreadystatechange de l'objet précédemment créé.
xhr.onreadystatechange = function(){ // instructions de traitement de la réponse };                   
if (xhr.readyState == 4) { // Reçu, OK    } else { // Attendre... }    

Troisième étape: faire la requête elle-même

Deux méthodes de XMLHttpRequest sont utilisées:
- open: commande GET ou POST, URL du document, true pour asynchrone.
- send: avec POST seulement, données à envoyer au serveur.
La requête ci-dessous lit un document sur le serveur.
xhr.open('GET', 'http://www.xul.fr/fichier.xml', true);                  
xhr.send(null);

Exemple de programme Ajax

Lire un texte

<html>
<head>
<script>
function submitForm()
{ 
    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2) 
        {
          try {  xhr = new XMLHttpRequest();     }
          catch (e3) {  xhr = false;   }
        }
     }
 
    xhr.onreadystatechange  = function()
    { 
         if(xhr.readyState  == 4)
         {
              if(xhr.status  == 200) 
                 document.ajax.dyn="Received:"  + xhr.responseText; 
              else 
                 document.ajax.dyn="Error code " + xhr.status;
         }
    }; 

   xhr.open( GET", "data.xml",  true); 
   xhr.send(null); 
} 
</script>
</head>
                 
<body>
    <FORM method="POST" name="ajax" action="">                  
         <INPUT type="BUTTON" value="Submit"  ONCLICK="submitForm()">
         <INPUT type="text" name="dyn"  value=""> 
    </FORM>
 </body>
 </html> 

Aucun commentaire:

Enregistrer un commentaire