In einem ersten einfachen Beispiel wollen wir uns die Ajax - Basics einmal anschauen.
In diesem Beispiel sende ich einen Request ab, welcher auf eine Textdatei zugreift.
Der Inhalt dieser Textdatei wird als String in den div
-Container „one“ geschrieben.
Du kannst diese kleine Demo unter https://it.bzz.ch/m321/ajaxdemo ausprobieren.
Zunächst einmal der Sourcecode der Dateien, diese gehe ich später Zeile für Zeile durch:
Hello AJAX-World!
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="author" content="Marcel Suter" /> <meta name="copyright" content="Marcel Suter - BZZ" /> <meta name="project" content="Simple Ajax" /> <meta name="description" content="AJAX Text Datei" /> <title>Textdatei mittels AJAX lesen</title> <script src="./ajaxDemo.js"></script> </head> <body> <div id="one" style="width: 80%; height: 80%; border: dashed 1px;"> </div> </body>
document.addEventListener("DOMContentLoaded", () => { fetch("./test.txt") .then(function (response) { if (response.ok) { return response; } else { console.log(response); } }) .then(response => response.text()) .then(textData => { document.getElementById("one").innerText = textData; }) .catch(function (error) { console.log(error); }); });
document.addEventListener("DOMContentLoaded", () => { ... });
Dieser Listener wartet darauf, dass der HTML-Code geladen und verarbeitet wurde. Sobald dies der Fall ist, wird der Code in den geschweiften Klammern ausgeführt.
fetch("./test.txt")
Mit dem Befehl fetch
setzen wir einen Request ab.
Im einfachsten Fall benötigen Sie nur die URL einer Datei oder eines Services anzugeben.
fetch("./test.txt") .then(function (response) { if (response.ok) { return response; } else { console.log(response); } }) .then(response => response.text()) .then(textData => { document.getElementById("one").innerText = textData; })
Fetch ist ein asynchroner Befehl, daher definieren wir mit .then
eine Reihe von Listenern.
Sobald der fetch-Befehl fertig ausgeführt wurde, wird der erste .then
-Listener aktiviert.
Im Erfolgsfall werden die weiteren Listener, einer nach dem anderen, durchgeführt.
Der erste Listener prüft, ob der Request erfolgreich durchgeführt wurde (response.ok
).
Falls dies zutrifft, wird die Response an den nächsten Listener weitergegeben (return response
).
Da wir „nur“ den Textinhalt der Response benötigen, extrahieren wir diesen Text (response.text()
).
Im letzten .then
-Block fügen wir den Text in das div-Element mit der ID one
ein.