Lösung: JS lädt JSON-Daten in die Webseite
Browserfenster und Konsolenausgabe
index.html
<!doctype html><html lang="de"><head><title>JavaScript loads json file</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link href="css/style.css" rel="stylesheet" type="text/css" /><script src="js/index.js"></script></head><body onload="loadJSON()"><div id="jsonData"></div></body></html>
style.css
#jsonData {
color: grey;
font-family: courier;
font-size: 300%;
}
index.js
function loadJSON() {fetch("data/user.json") // can be an url.then(response => {return response.json();}).then(jsondata => {console.log(jsondata)appendData(jsondata)}).catch(err => {console.log(err) // normally write error not only into console});}function appendData(data) {var mainContainer = document.getElementById("jsonData"); // find element with id=jsonDatafor (var i = 0; i < data.users.length; i++) { // loop for getting every object in json listvar div = document.createElement("div"); // create new div and fill itdiv.innerHTML = 'id:' + data.users[i].id + ' Name: ' + data.users[i].firstName + ' ' + data.users[i].lastName;mainContainer.appendChild(div); // append div to main container}console.log(mainContainer)}
Es gibt mehrere Möglichkeiten, mit JavaScript eine Netzwerkanfrage zu senden und Informationen vom Server zu erhalten.
Die fetch()-Methode ist dabei die modernste und sehr vielseitig:
Die Funktion fetch() gibt ein "Promise"-Objekt (dt. Versprechen) zurück. Ein Promise ist ein Objekt, das die eventuelle Beendigung oder das Scheitern einer asynchronen Operation (Thread) darstellt. Das bedeutet, dass mehrere fetch()-Funktionen angestoßen werden können und eine Webseite so Inhalte quasi "gleichzeitig" (Multithreading) aus mehreren Datenquellen beziehen kann.
Mit der Methode then() wird an das zurückgegebene Promise-Objekt eine sogenannte Callback-Funktion angehängt (anstatt wie sonst üblich, Callback-Funktionen als Parameter an asynchrone Funktionen (Threads) zu übergeben).
So wird nachdem die JSON-Daten aus der Datei abgerufen wurden, die then()-Funktion mit den JSON-Daten in der Antwort (engl. response) ausgeführt.
Eine then()-Methode gibt ihrerseits ein Promise zurück, an das mit then() eine weitere Callback-Funktion angehängt werden kann, die erst nach Beendigung der vorherigen Callback-Funktion ausgeführt wird.
Mehrere Callback-Funktionen werden also verkettet und es wird versprochen (engl. promise), dass die nächste erst nach erfolgreichem Abschluss der vorherigen ausgeführt wird.
Die Methode catch() fängt dabei Exceptions auf, die im Fehlerfall geworfen werden.
Das Multithreading wird im UML-Sequenzdiagramm durch gleichzeitige Abarbeitung dargestellt:

PlantUML-Code (generiert von ChatGPT (OpenAI GPT-4.1-mini) am 22.08.2025, basierend auf Nutzer-Prompting)
@startuml
actor Client
participant FetchThread0 #ADD8E6
participant FetchThread1 #90EE90
participant ServerThread0 #ADD8E6
participant ServerThread1 #90EE90
Client [#ADD8E6]--> FetchThread0: fetch()
activate FetchThread0 #ADD8E6
Client [#90EE90]--> FetchThread1: fetch()
activate FetchThread1 #90EE90
FetchThread0 [#ADD8E6]--> ServerThread0: request0
activate ServerThread0 #ADD8E6
FetchThread1 [#90EE90]--> ServerThread1: request1
activate ServerThread1 #90EE90
ServerThread0 [#ADD8E6]--> FetchThread0: response0
destroy ServerThread0
ServerThread1 [#90EE90]--> FetchThread1: response1
destroy ServerThread1
FetchThread0 [#ADD8E6]--> FetchThread0: response0.json() (parse)
FetchThread1 [#90EE90]--> FetchThread1: response1.json() (parse)
FetchThread0 [#ADD8E6]--> Client: appendData(jsondata0)
FetchThread0 [#ADD8E6]--> Client: console.log(jsondata0)
deactivate FetchThread0
FetchThread1 [#90EE90]--> Client: appendData(jsondata1)
FetchThread1 [#90EE90]--> Client: console.log(jsondata1)
deactivate FetchThread1
par Fehlerbehandlung
group Fehler bei FetchThread0
FetchThread0 [#ADD8E6]--> Client: catch(err0)
Client -> Client: console.log(err0)
end
group Fehler bei FetchThread1
FetchThread1 [#90EE90]--> Client: catch(err1)
Client -> Client: console.log(err1)
end
end
@endumlWeitere Informationen:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises?retiredLocale=de
Dateien der Beispiellösung:
https://moodle.eick-at.de/pluginfile.php/1313/mod_page/content/6/JS-loadJsonFile.zip