Beispiel für eine AJAX- Datenbank
AJAX kann für die interaktive Kommunikation mit einer Datenbank verwendet werden.
Beispiel für eine AJAX-Datenbank
Das folgende Beispiel zeigt, wie eine Webseite mit AJAX Informationen aus einer Datenbank abrufen kann:
Beispiel
Customer info will be listed here...
Beispiel erklärt – Die Funktion showCustomer()
Wenn ein Benutzer einen Kunden in der Dropdown-Liste oben auswählt, wird eine Funktion namens „showCustomer()“ ausgeführt. Die Funktion wird durch das Ereignis "onchange" ausgelöst:
Kunde anzeigen
function showCustomer(str) {
var xhttp;
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState
== 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML
= this.responseText;
}
};
xhttp.open("GET",
"getcustomer.php?q="+str, true);
xhttp.send();
}
Die Funktion showCustomer() macht Folgendes:
- Überprüfen Sie, ob ein Kunde 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 AJAX-Serverseite
Die Seite auf dem Server, die durch das obige JavaScript aufgerufen wird, ist eine PHP-Datei mit dem Namen "getcustomer.php".
Der Quellcode in "getcustomer.php" führt eine Abfrage gegen eine Datenbank aus und gibt das Ergebnis in einer HTML-Tabelle zurück:
<?php
$mysqli = new mysqli("servername", "username",
"password", "dbname");
if($mysqli->connect_error) {
exit('Could not connect');
}
$sql = "SELECT customerid, companyname,
contactname, address, city, postalcode, country
FROM customers WHERE
customerid = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $_GET['q']);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($cid,
$cname, $name, $adr, $city, $pcode, $country);
$stmt->fetch();
$stmt->close();
echo "<table>";
echo "<tr>";
echo "<th>CustomerID</th>";
echo
"<td>" . $cid . "</td>";
echo "<th>CompanyName</th>";
echo "<td>" . $cname
. "</td>";
echo "<th>ContactName</th>";
echo "<td>" . $name . "</td>";
echo "<th>Address</th>";
echo "<td>" .
$adr . "</td>";
echo "<th>City</th>";
echo "<td>" . $city . "</td>";
echo "<th>PostalCode</th>";
echo "<td>" .
$pcode . "</td>";
echo "<th>Country</th>";
echo "<td>" . $country .
"</td>";
echo "</tr>";
echo "</table>";
?>