Tutoriel XML

ACCUEIL XML Introduction XML XML Comment utiliser Arbre XML Syntaxe XML Éléments XML Attributs XML Espaces de noms XML Affichage XML Requête HTTP XML Analyseur XML DOM XML XPath XML XML XSLT XQuery XML XMLXLink Validateur XML DTD XML Schéma XML Serveur XML Exemples XML XML Quiz Certificat XML

XMLAJAX

Présentation d'AJAX AJAX XMLHttp Requête AJAX Réponse AJAX Fichier XML AJAX PHP AJAX ASP AJAX Base de données AJAX Applications AJAX Exemples AJAX

DOM XML

Présentation du DOM Nœuds DOM Accès au DOM Informations sur le nœud DOM Liste des nœuds DOM Traversée du DOM Navigation DOM DOM Obtenir des valeurs Nœuds de changement DOM DOM Supprimer les nœuds DOM Remplacer les nœuds DOM Créer des nœuds DOM Ajouter des nœuds Nœuds de clonage DOM Exemples DOM

Tutoriel XPath

Présentation de XPath Nœuds XPath Syntaxe XPath Axes XPath Opérateurs XPath Exemples XPath

Tutoriel XSLT

Présentation de XSLT Langages XSL Transformation XSLT XSLT <modèle> XSLT <valeur-de> XSLT <pour-chaque> XSLT <sort> XSLT <si> XSLT <choisir> Appliquer XSLT XSLT sur le client XSLT sur le serveur XSLT Éditer XML Exemples XSLT

Tutoriel XQuery

Présentation de XQuery Exemple XQuery XQuery FLWOR XQuery HTML Termes XQuery Syntaxe XQuery Ajouter XQuery Sélection XQuery Fonctions XQuery

DTD XML

Présentation de la DTD Blocs de construction DTD Éléments DTD Attributs DTD Éléments DTD vs Attr Entités DTD Exemples de DTD

Schéma XSD

Présentation XSD Comment XSD XSD <schéma> Éléments XSD Attributs XSD Restrictions XSD

Complexe XSD

Éléments XSD XSD vide Éléments XSD uniquement Texte XSD uniquement XSD Mixte Indicateurs XSD XSD <tout> XSD <anyAttribute> Remplacement XSD Exemple XSD

Données XSD

Chaîne XSD Date XSD Numérique XSD Divers XSD Référence XSD

Services Web

Services XML XMLWSDL SAVON XML XML RDF XML RSS

Les références

Types de nœuds DOM Nœud DOM Liste de nœuds DOM DOM NamedNodeMap Documents DOM Élément DOM Attribut DOM Texte DOM DOM CDATA DOM Comment DOM XMLHttpRequest Analyseur DOM Éléments XSLT Fonctions XSLT/XPath

AJAX - Envoyer une requête à un serveur


L'objet XMLHttpRequest est utilisé pour échanger des données avec un serveur.


Envoyer une requête à un serveur

Pour envoyer une requête à un serveur, nous utilisons les méthodes open() et send() de l'objet XMLHttpRequest :

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Method Description
open(method, url, async) Specifies the type of request

method: the type of request: GET or POST
url: the server (file) location
async: true (asynchronous) or false (synchronous)
send() Sends the request to the server (used for GET)
send(string) Sends the request to the server (used for POST)

OBTENIR ou POSTER ?

GET est plus simple et plus rapide que POST et peut être utilisé dans la plupart des cas.

Cependant, utilisez toujours les requêtes POST lorsque :

  • Un fichier en cache n'est pas une option (mettre à jour un fichier ou une base de données sur le serveur).
  • Envoi d'une grande quantité de données au serveur (POST n'a pas de limitation de taille).
  • En envoyant des entrées utilisateur (qui peuvent contenir des caractères inconnus), POST est plus robuste et sécurisé que GET.

Requêtes GET

Une simple requête GET :

Exemple

xhttp.open("GET", "demo_get.asp", true);
xhttp.send();

Dans l'exemple ci-dessus, vous pouvez obtenir un résultat mis en cache. Pour éviter cela, ajoutez un identifiant unique à l'URL :

Exemple

xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();

Si vous souhaitez envoyer des informations avec la méthode GET, ajoutez les informations à l'URL :

Exemple

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();


Demandes POST

Une simple requête POST :

Exemple

xhttp.open("POST", "demo_post.asp", true);
xhttp.send();

Pour POSTer des données comme un formulaire HTML, ajoutez un en-tête HTTP avec setRequestHeader(). Spécifiez les données que vous souhaitez envoyer dans la méthode send() :

Exemple

xhttp.open("POST", "demo_post2.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Method Description
setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name
value: specifies the header value

L'url - Un fichier sur un serveur

Le paramètre url de la méthode open() est une adresse vers un fichier sur un serveur :

xhttp.open("GET", "ajax_test.asp", true);

Le fichier peut être n'importe quel type de fichier, comme .txt et .xml, ou des fichiers de script de serveur comme .asp et .php (qui peuvent effectuer des actions sur le serveur avant de renvoyer la réponse).


Asynchrone - Vrai ou Faux ?

Les requêtes du serveur doivent être envoyées de manière asynchrone.

Le paramètre async de la méthode open() doit être défini sur true :

xhttp.open("GET", "ajax_test.asp", true);

En envoyant de manière asynchrone, le JavaScript n'a pas à attendre la réponse du serveur, mais peut à la place :

  • exécuter d'autres scripts en attendant la réponse du serveur
  • traiter la réponse une fois que la réponse est prête

La propriété onreadystatechange

Avec l'objet XMLHttpRequest, vous pouvez définir une fonction à exécuter lorsque la requête reçoit une réponse.

La fonction est définie dans la propriété onreadystatechange de l'objet XMLHttpResponse :

Exemple

xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    document.getElementById("demo").innerHTML = this.responseText;
  }
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();

Le fichier "ajax_info.txt" utilisé dans l'exemple ci-dessus est un simple fichier texte et ressemble à ceci :

<h1>AJAX</h1>
<p>AJAX is not a programming language.</p>
<p>AJAX is a technique for accessing web servers from a web page.</p>
<p>AJAX stands for Asynchronous JavaScript And XML.</p>

Vous en apprendrez plus sur onreadystatechange dans un chapitre ultérieur.


Requête synchrone

Pour exécuter une requête synchrone, modifiez le troisième paramètre de la méthode open() sur false :

xhttp.open("GET", "ajax_info.txt", false);

Parfois async = false sont utilisés pour des tests rapides. Vous trouverez également des requêtes synchrones dans l'ancien code JavaScript.

Étant donné que le code attendra la fin du serveur, il n'est pas nécessaire d'utiliser une fonction onreadystatechange :

Exemple

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;

XMLHttpRequest synchrone (async = false) n'est pas recommandé car le JavaScript s'arrêtera de s'exécuter jusqu'à ce que la réponse du serveur soit prête. Si le serveur est occupé ou lent, l'application se bloque ou s'arrête.

XMLHttpRequest synchrone est en train d'être supprimé de la norme Web, mais ce processus peut prendre de nombreuses années.

Les outils de développement modernes sont encouragés à avertir de l'utilisation de requêtes synchrones et peuvent générer une exception InvalidAccessError lorsqu'elle se produit.