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

L' objet XMLHttpRequest


Tous les navigateurs modernes ont un objet XMLHttpRequest intégré pour demander des données à un serveur.

Tous les principaux navigateurs ont un analyseur XML intégré pour accéder et manipuler XML.


L'objet XMLHttpRequest

L'objet XMLHttpRequest peut être utilisé pour demander des données à un serveur Web.

L'objet XMLHttpRequest est le rêve d'un développeur , car vous pouvez :

  • Mettre à jour une page Web sans recharger la page
  • Demander des données à un serveur - après le chargement de la page
  • Recevoir des données d'un serveur - après le chargement de la page
  • Envoyer des données à un serveur - en arrière-plan

XMLHttpRequest Example

Lorsque vous tapez un caractère dans le champ de saisie ci-dessous, un XMLHttpRequest est envoyé au serveur et des suggestions de noms sont renvoyées (du serveur) :

Exemple

Start typing a name in the input field below:

Name:

Suggestions:


Envoi d'un XMLHttpRequest

Tous les navigateurs modernes ont un objet XMLHttpRequest intégré.

Une syntaxe JavaScript courante pour l'utiliser ressemble beaucoup à ceci :

Exemple

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       // Action to be performed when the document is read;
    }
};
xhttp.open("GET", "filename", true);
xhttp.send();

Création d'un objet XMLHttpRequest

La première ligne de l'exemple ci-dessus crée un objet XMLHttpRequest :

var xhttp = new XMLHttpRequest();

L'événement onreadystatechange

La propriété readyState contient le statut de XMLHttpRequest.

L' événement onreadystatechange est déclenché chaque fois que readyState change.

Lors d'une requête serveur, le readyState passe de 0 à 4 :

0 : requête non initialisée
1 : connexion au serveur établie
2 : requête reçue
3 : traitement de la requête
4 : requête terminée et réponse prête

Dans la propriété onreadystatechange, spécifiez une fonction à exécuter lorsque readyState change :

xhttp.onreadystatechange = function()

Lorsque readyState est 4 et que status est 200, la réponse est prête :

if (this.readyState == 4 && this.status == 200)

Propriétés et méthodes XMLHttpRequest

Method Description
new XMLHttpRequest() Creates a new XMLHttpRequest object
open(method, url, async) Specifies the type of request
method: the type of request: GET or POST
url: the file location
async: true (asynchronous) or false (synchronous)
send() Sends a request to the server (used for GET)
send(string) Sends a request string to the server (used for POST)
onreadystatechange A function to be called when the readyState property changes
readyState The status of the XMLHttpRequest
0: request not initialized
1: server connection established
2: request received
3: processing request
4: request finished and response is ready
status 200: OK
404: Page not found
responseText The response data as a string
responseXML The response data as XML data

Accès à travers les domaines

Pour des raisons de sécurité, les navigateurs modernes n'autorisent pas l'accès entre les domaines.

Cela signifie que la page Web et le fichier XML qu'elle tente de charger doivent se trouver sur le même serveur.

Les exemples sur W3Schools ouvrent tous des fichiers XML situés sur le domaine W3Schools.

Si vous souhaitez utiliser l'exemple ci-dessus sur l'une de vos propres pages Web, les fichiers XML que vous chargez doivent se trouver sur votre propre serveur.


La propriété responseText

La propriété responseText renvoie la réponse sous forme de chaîne.

Si vous souhaitez utiliser la réponse en tant que chaîne de texte, utilisez la propriété responseText :

Exemple

document.getElementById("demo").innerHTML = xmlhttp.responseText;

La propriété responseXML

La propriété responseXML renvoie la réponse sous la forme d'un objet DOM XML.

Si vous souhaitez utiliser la réponse en tant qu'objet DOM XML, utilisez la propriété responseXML :

Exemple

Demandez le fichier cd_catalog.xml et utilisez la réponse en tant qu'objet DOM XML :

xmlDoc = xmlhttp.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("ARTIST");
for (i = 0; i < x.length; i++) {
    txt += x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;

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

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 :

xmlhttp.open("GET", "xmlhttp_info.txt", 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 ?

Pour envoyer la requête de manière asynchrone, le paramètre async de la méthode open() doit être défini sur true :

xmlhttp.open("GET", "xmlhttp_info.txt", true);

L'envoi de requêtes de manière asynchrone est une énorme amélioration pour les développeurs Web. De nombreuses tâches effectuées sur le serveur prennent beaucoup de temps.

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 quand la réponse est prête

Asynchrone = vrai

Lorsque vous utilisez async = true, spécifiez une fonction à exécuter lorsque la réponse est prête dans l'événement onreadystatechange :

Exemple

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

Asynchrone = faux

Pour utiliser async = false, remplacez le troisième paramètre de la méthode open() par false :

xmlhttp.open("GET", "xmlhttp_info.txt", false);

L'utilisation de async = false n'est pas recommandée, mais pour quelques petites requêtes, cela peut convenir.

N'oubliez pas que JavaScript ne continuera PAS à s'exécuter tant que la réponse du serveur n'est pas prête. Si le serveur est occupé ou lent, l'application se bloque ou s'arrête.

Remarque : lorsque vous utilisez async = false, n'écrivez PAS de fonction onreadystatechange - placez simplement le code après l'instruction send() :

Exemple

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

Analyseur XML

Tous les navigateurs modernes ont un analyseur XML intégré.

Le modèle d'objet de document XML (le DOM XML) contient de nombreuses méthodes pour accéder et modifier XML.

Cependant, avant qu'un document XML soit accessible, il doit être chargé dans un objet DOM XML.

Un analyseur XML peut lire du texte brut et le convertir en un objet DOM XML.


Analyser une chaîne de texte

Cet exemple analyse une chaîne de texte dans un objet DOM XML et en extrait les informations avec JavaScript :

Exemple

<html>
<body>

<p id="demo"></p>

<script>
var text, parser, xmlDoc;

text = "<bookstore><book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book></bookstore>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
</script>

</body>
</html>

Anciens navigateurs (IE5 et IE6)

Les anciennes versions d'Internet Explorer (IE5 et IE6) ne prennent pas en charge l'objet XMLHttpRequest.

Pour gérer IE5 et IE6, vérifiez si le navigateur supporte l'objet XMLHttpRequest, ou bien créez un ActiveXObject :

Exemple

if (window.XMLHttpRequest) {
    // code for modern browsers
    xmlhttp = new XMLHttpRequest();
 } else {
    // code for old IE browsers
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

Les anciennes versions d'Internet Explorer (IE5 et IE6) ne prennent pas en charge l'objet DOMParser.

Pour gérer IE5 et IE6, vérifiez si le navigateur supporte l'objet DOMParser, ou bien créez un ActiveXObject :

Exemple

if (window.DOMParser) {
  // code for modern browsers
  parser = new DOMParser();
  xmlDoc = parser.parseFromString(text,"text/xml");
} else {
  // code for old IE browsers
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async = false;
  xmlDoc.loadXML(text);

Plus d'exemples


Récupérer les informations d'en-tête d'une ressource (fichier).


Récupérer des informations d'en-tête spécifiques d'une ressource (fichier).


Comment une page Web peut communiquer avec un serveur Web pendant qu'un utilisateur tape des caractères dans un champ de saisie.


Comment une page Web peut récupérer des informations d'une base de données avec l'objet XMLHttpRequest.


Créez un XMLHttpRequest pour récupérer les données d'un fichier XML et afficher les données dans un tableau HTML.