PHP-Beispiel – AJAX und XML
AJAX kann für die interaktive Kommunikation mit einer XML-Datei verwendet werden.
AJAX-XML-Beispiel
Das folgende Beispiel zeigt, wie eine Webseite mit AJAX Informationen aus einer XML-Datei abrufen kann:
Beispiel
CD info will be listed here...
Beispiel erklärt – Die HTML-Seite
Wenn ein Benutzer eine CD in der Dropdown-Liste oben auswählt, wird eine Funktion namens "showCD()" ausgeführt. Die Funktion wird durch das Ereignis "onchange" ausgelöst:
<html>
<head>
<script>
function showCD(str)
{
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
document.getElementById("txtHint").innerHTML=this.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="Bee Gees">Bee Gees</option>
<option value="Cat Stevens">Cat Stevens</option>
</select>
</form>
<div id="txtHint"><b>CD info will be listed here...</b></div>
</body>
</html>
Die Funktion showCD() macht Folgendes:
- Überprüfen Sie, ob eine CD ausgewählt ist
- Erstellen Sie ein XMLHttpRequest-Objekt
- Erstellen Sie die Funktion, die ausgeführt werden soll, wenn die Serverantwort bereit ist
- Senden Sie die Anforderung an eine Datei auf dem Server
- Beachten Sie, dass der URL ein Parameter (q) hinzugefügt wird (mit dem Inhalt der Dropdown-Liste).
Die PHP-Datei
Die Seite auf dem Server, die durch das obige JavaScript aufgerufen wird, ist eine PHP-Datei mit dem Namen "getcd.php".
Das PHP-Skript lädt ein XML-Dokument, " cd_catalog.xml ", führt eine Abfrage für die XML-Datei aus und gibt das Ergebnis als HTML zurück:
<?php
$q=$_GET["q"];
$xmlDoc = new DOMDocument();
$xmlDoc->load("cd_catalog.xml");
$x=$xmlDoc->getElementsByTagName('ARTIST');
for ($i=0; $i<=$x->length-1; $i++)
{
//Process only element nodes
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++)
{
//Process only element nodes
if ($cd->item($i)->nodeType==1) {
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
echo($cd->item($i)->childNodes->item(0)->nodeValue);
echo("<br>");
}
}
?>
Wenn die CD-Abfrage vom JavaScript an die PHP-Seite gesendet wird, passiert Folgendes:
- PHP erstellt ein XML-DOM-Objekt
- Finden Sie alle <artist>-Elemente, die mit dem vom JavaScript gesendeten Namen übereinstimmen
- Albuminformationen ausgeben (an den Platzhalter „txtHint“ senden)