PHP-AJAX et XML

AJAX peut être utilisé pour communiquer de manière interactive avec des fichiers XML.


Exemple XML AJAX

L'exemple suivant montrera comment une page Web lit les informations d'un fichier XML via AJAX :

27.png

Lorsque l'utilisateur sélectionne un CD dans la liste déroulante ci-dessus, une fonction nommée "showCD()" sera exécutée. Cette fonction est déclenchée par l'événement "onchange" :

<!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>PHP中文网</title>
     <script>
         function showCD(str)
         {
             if (str=="")
             {
                 document.getElementById("txtHint").innerHTML="";
                 return;
             }
             if (window.XMLHttpRequest)
             {
                 // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行
                 xmlhttp=new XMLHttpRequest();
             }
             else
             {
                 // IE6, IE5 浏览器执行
                 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>
     Select a CD:
     <select name="cds" onchange="showCD(this.value)">
         <option value="">Select a 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>CD info will be listed here...</b></div>
 </body>
 </html>

la fonction showCD() effectuera 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 la liste déroulante Contenu


fichier xml

<CATALOG>
    <CD>
        <TITLE>Empire Burlesque</TITLE>
        <ARTIST>Bob Dylan</ARTIST>
        <COUNTRY>USA</COUNTRY>
        <COMPANY>Columbia</COMPANY>
        <PRICE>10.90</PRICE>
        <YEAR>1985</YEAR>
    </CD>
    <CD>
        <TITLE>Maggie May</TITLE>
        <ARTIST>Rod Stewart</ARTIST>
        <COUNTRY>UK</COUNTRY>
        <COMPANY>Pickwick</COMPANY>
        <PRICE>8.50</PRICE>
        <YEAR>1990</YEAR>
    </CD>
    <CD>
        <TITLE>Black angel</TITLE>
        <ARTIST>Savage Rose</ARTIST>
        <COUNTRY>EU</COUNTRY>
        <COMPANY>Mega</COMPANY>
        <PRICE>10.90</PRICE>
        <YEAR>1995</YEAR>
    </CD>
    <CD>
        <TITLE>The dock of the bay</TITLE>
        <ARTIST>Otis Redding</ARTIST>
        <COUNTRY>USA</COUNTRY>
        <COMPANY>Atlantic</COMPANY>
        <PRICE>7.90</PRICE>
        <YEAR>1987</YEAR>
    </CD>
</CATALOG>



Fichier PHP

La page du 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 en 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++)
 {
     // 处理元素节点
     if ($x->item($i)->nodeType==1)
     {
         if ($x->item($i)->childNodes->item(0)->nodeValue == $q)
         {
             $y=($x->item($i)->parentNode);
         }
     }
 }
 
 $cd=($y->childNodes);
 
 for ($i=0;$i<$cd->length;$i++)
 {
     // 处理元素节点
     if ($cd->item($i)->nodeType==1)
     {
         echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
         echo($cd->item($i)->childNodes->item(0)->nodeValue);
         echo("<br>");
     }
 }
 ?>

quand Lorsqu'une requête CD est envoyée depuis JavaScript vers une page PHP, ce qui se passe est :

1. PHP crée un objet XML DOM

. 2. Recherche tous les éléments <artiste> qui correspondent aux données transmises par le nom JavaScript

3. Affiche les informations de l'album et renvoie l'espace réservé "txtHint"

Affichage des résultats du programme :

59.png


Formation continue
||
<CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> <CD> <TITLE>Sylvias Mother</TITLE> <ARTIST>Dr.Hook</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>CBS</COMPANY> <PRICE>8.10</PRICE> <YEAR>1973</YEAR> </CD> <CD> <TITLE>Maggie May</TITLE> <ARTIST>Rod Stewart</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Pickwick</COMPANY> <PRICE>8.50</PRICE> <YEAR>1990</YEAR> </CD> <CD> <TITLE>Black angel</TITLE> <ARTIST>Savage Rose</ARTIST> <COUNTRY>EU</COUNTRY> <COMPANY>Mega</COMPANY> <PRICE>10.90</PRICE> <YEAR>1995</YEAR> </CD> <CD> <TITLE>The dock of the bay</TITLE> <ARTIST>Otis Redding</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Atlantic</COMPANY> <PRICE>7.90</PRICE> <YEAR>1987</YEAR> </CD> </CATALOG>
soumettreRéinitialiser le code
  • Recommandations de cours
  • Téléchargement du didacticiel