AJAX peut être utilisé pour communiquer de manière interactive avec des fichiers XML.
L'exemple suivant montre comment une page Web lit les informations d'un fichier XML via AJAX :
Lorsque l'utilisateur sélectionne un CD dans la liste déroulante ci-dessus, une fonction nommée "showCD()" est exécutée. Cette fonction est déclenchée par l'événement "onchange" :
<html><head><script>function showCD(str){ if (str=="") { document.getElementById("txtHint").innerHTML="" ; return ; Les navigateurs IE7+, Firefox, Chrome, Opera et Safari exécutent xmlhttp=new XMLHttpRequest( } else { // IE6, IE5); Le navigateur exécute xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint"). innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","getcd.php?q="+str,true); xmlhttp.send();}</script></head><body><form>Sélectionnez un CD :<sélectionnez le nom ="cds" onchange="showCD(this.value)"><option value="">Sélectionnez un CD :</option><option value="Bob Dylan">Bob Dylan</option><option value=" Bonnie Tyler">Bonnie Tyler</option><option value="Dolly Parton">Dolly Parton</option></select></form><div id="txtHint"><b>Les informations sur le CD seront répertoriées ici...</ b></div></body></html>
La fonction showCD() effectue les étapes suivantes :
Vérifier si un CD est sélectionné
Créer un objet XMLHttpRequest
Créer une fonction qui s'exécute lorsque la réponse du serveur est prête
Envoyer une requête à un fichier sur le serveur
Veuillez noter le paramètre (q) ajouté à la fin de l'URL (contenant le contenu de la liste déroulante)
La page serveur appelée ci-dessus via JavaScript est un fichier PHP nommé "getcd.php".
Le script PHP charge le document XML « cd_catalog.xml », exécute la requête sur le fichier XML et renvoie les résultats au format HTML :
<?php$q=$_GET["q"];$xmlDoc = new DOMDocument();$xmlDoc->load("cd_catalog.xml");$x=$xmlDoc->getElementsByTagName('ARTIST');for ($i=0; $i<=$x->length-1; $i++){ // Nœud d'élément de processus si ($x->item($i)->nodeType==1) { if ($x->item($i)->childNodes->item(0)->nodeValue == $q) { $y= ($x->item($i)->parentNode); } }}$cd=($y->childNodes);pour ($i=0;$i<$cd->length;$i++){ // Nœud d'élément de processus if ($cd->item($i)->nodeType==1) { echo("<b>" . $cd->item($i)->nodeName . ":</b > "); echo($cd->item($i)->childNodes->item(0)->nodeValue); echo("<br>"); }}?>
Lorsque la requête CD est envoyée de JavaScript vers la page PHP, que se passe-t-il :
PHP crée un objet XML DOM
Rechercher des noms dans tous les éléments <artist> qui correspondent aux données transmises par JavaScript
Affichez les informations sur l'album et renvoyez l'espace réservé "txtHint".