Vorlesung 6
JavaScript jQuery & Events

Grundlagen von Ajax

Ajax (Asynchronous JavaScript and XML) ist eine Webentwicklungstechnik, die es ermöglicht, Webanwendungen zu erstellen, die asynchron Daten im Hintergrund austauschen können, ohne die Seite neu laden zu müssen. Dies führt zu einer flüssigeren und schnelleren Benutzererfahrung. Ajax nutzt eine Kombination aus JavaScript und XML, obwohl heutzutage oft JSON anstelle von XML verwendet wird.

Ajax arbeitet mit der XMLHttpRequest-API, die es JavaScript ermöglicht, HTTP-Anfragen an den Server zu senden und Antworten zu empfangen, ohne die Seite neu laden zu müssen. Die asynchrone Natur von Ajax bedeutet, dass diese Anfragen im Hintergrund geschehen, während der Benutzer weiterhin mit der Seite interagieren kann.

Einfacher Ajax-Aufruf


let xhr = new XMLHttpRequest();
xhr.open("GET", "meineDatei.txt", true);
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        console.log(xhr.responseText);
    }
};
xhr.send();
  • XMLHttpRequest(): Erstellt ein neues Ajax-Objekt.
  • .open("GET", "meineDatei.txt", true):Konfiguriert die Anfrage. Hier wird die Datei meineDatei.txt asynchron mit der Methode GET abgerufen.
  • .onreadystatechange: Eine Event-Handler-Funktion, die aufgerufen wird, wenn der Status der Anfrage sich ändert.
  • xhr.readyState: Gibt den Status der Anfrage an. 4 bedeutet, dass die Anfrage abgeschlossen und die Antwort verfügbar ist.
  • xhr.status: Der HTTP-Statuscode, 200 steht für "OK".
  • xhr.responseText: Der Text, der vom Server zurückgegeben wird.
  • .send(): Sendet die Anfrage.

Ajax im Detail

  • Asynchronität: Der Hauptvorteil von Ajax ist die Fähigkeit, Daten asynchron vom Server abzurufen. Das bedeutet, dass der Benutzer mit der Webseite interagieren kann, während im Hintergrund Daten geladen oder gesendet werden, ohne die Seite neu laden zu müssen.
  • JavaScript und XMLHttpRequest: JavaScript spielt eine zentrale Rolle in Ajax. Es verwendet das XMLHttpRequest-Objekt, um HTTP-Anfragen zu erstellen und zu senden. Diese Anfragen können Daten im JSON-, XML-, HTML- oder Textformat abrufen.
  • Dynamische Inhalte: Mit Ajax kann eine Webseite dynamisch aktualisiert werden. Beispielsweise können neue Inhalte geladen, Formulardaten gesendet oder Daten von einem Server abgerufen werden, ohne die Seite neu laden zu müssen.
  • Verbesserte Benutzererfahrung: Da die Seite nicht bei jeder Aktion neu geladen werden muss, sorgt Ajax für eine reibungslosere und schnellere Benutzererfahrung.

Ajax und PHP

Ajax kann mit PHP-Backends verwendet werden, um Daten dynamisch zu laden und zu verarbeiten. Die Rolle von PHP in einer Ajax-Anwendung ist es, Anfragen vom Client zu empfangen, diese zu verarbeiten (z.B. Datenbankabfragen durchführen) und eine Antwort zurückzusenden.

PHP ist oft die serverseitige Sprache, die Ajax-Anfragen verarbeitet.

  • Datenempfang: PHP-Skripte empfangen die von Ajax gesendeten Daten, verarbeiten sie und senden eine Antwort zurück.
  • Datenverarbeitung: PHP kann Daten aus einer Datenbank abfragen, verarbeiten und dann in einem für JavaScript lesbaren Format (wie JSON) zurücksenden.

Ajax-Anfrage an PHP-Script

JavaScript (Frontend)


$.ajax({
    url: 'meinScript.php',
    type: 'POST',
    data: {name: 'Max'},
    success: function(response) {
        console.log(response);
    }
});

PHP (Backend)


<?php
$receivedData = $_POST['key'];
// Verarbeitung ...
echo "Empfangene Daten: $receivedData";
?>

Beschreibung:

  • $.ajax(): jQuery-Methode für Ajax-Anfragen.
  • url: Der Pfad zum PHP-Script.
  • type: Die HTTP-Methode, hier POST.
  • data: Die zu sendenden Daten, hier ein Objekt mit dem Namen Max.
  • success: Eine Funktion, die ausgeführt wird, wenn die Anfrage erfolgreich ist.
  • response: Enthält die Antwort vom Server..

jQuery und Ajax

jQuery vereinfacht die Ajax-Programmierung durch Bereitstellung einer einfacheren Syntax und Methoden. Es bietet auch Cross-Browser-Kompatibilität.

GET-Anfrage: Daten vom Server abrufen.


$.get('server.php', {name: 'Max'}, function(response) {
    console.log(response);
});

POST-Anfrage: Daten an den Server senden.


$.post('server.php', {data: 'Wert'}, function(response) {
    console.log(response);
});

Reload-Methoden und ihre Bedeutung in Ajax

In traditionellen Webanwendungen werden Seiten neu geladen, um neue Inhalte anzuzeigen oder Daten zu senden. Ajax ändert diesen Ansatz, indem es erlaubt, Daten zu senden und zu empfangen, ohne die Seite neu zu laden. Dies verbessert nicht nur die Benutzererfahrung, sondern reduziert auch die Serverlast und Netzwerkverkehr.


Ajax revolutioniert die Art und Weise, wie Webanwendungen erstellt werden, indem es asynchrone Datenanfragen ermöglicht. Dies führt zu einer schnelleren und reibungsloseren Benutzererfahrung. In Verbindung mit PHP ermöglicht Ajax eine effiziente Datenverarbeitung auf dem Server, und der Einsatz von jQuery erleichtert die Ajax-Programmierung deutlich.

Fortgeschrittene Ajax-Konzepte

JSON und Ajax: Statt einfacher Textantworten ist es üblich, dass Ajax-Anfragen JSON (JavaScript Object Notation) verwenden, eine leichte Daten-Austausch-Format, das leicht von JavaScript gelesen und verarbeitet werden kann.

Ein Ajax-Aufruf erhält JSON von einem PHP-Server.

JavaScript


$.ajax({
    url: 'daten.php',
    type: 'GET',
    dataType: 'json',
    success: function(data) {
        console.log('Name: ', data.name);
    }
});

PHP


<?php
$response = ['name' => 'Max', 'alter' => 25];
echo json_encode($response);
?>

Fehlerbehandlung in Ajax: Es ist wichtig, auf Fehler bei Ajax-Anfragen vorbereitet zu sein, etwa wenn der Server nicht erreichbar ist oder eine falsche Antwort sendet.

Hinzufügen von Fehlerbehandlung zu einer Ajax-Anfrage.

JavaScript


$.ajax({
    url: 'daten.php',
    type: 'GET',
    dataType: 'json',
    success: function(data) {
        // Erfolgreiche Verarbeitung
    },
    error: function(xhr, status, error) {
        console.error('Fehler aufgetreten: ', error);
    }
});

Promises in Ajax: Moderne JavaScript-Techniken wie Promises können mit Ajax verwendet werden, um besseren asynchronen Code zu schreiben.

Verwendung von Promises mit Ajax.

JavaScript


function fetchData() {
    return $.ajax({
        url: 'daten.php',
        type: 'GET',
        dataType: 'json'
    });
}

fetchData().done(function(data) {
    console.log('Daten empfangen: ', data);
}).fail(function(error) {
    console.error('Fehler: ', error);
});

Ajax mit Async/Await: Async/Await, eine moderne JavaScript-Syntax, kann Ajax-Anfragen noch lesbarer und wartbarer machen.

Verwendung von Async/Await mit Ajax.

JavaScript


async function fetchData() {
    try {
        let response = await $.ajax({url: 'daten.php', type: 'GET', dataType: 'json'});
        console.log('Daten: ', response);
    } catch (error) {
        console.error('Fehler: ', error);
    }
}

fetchData();

PHP und Ajax für fortgeschrittene Anwendungen

  • Sicherheit: Bei der Verarbeitung von Ajax-Anfragen ist die Sicherheit von entscheidender Bedeutung. Stellen Sie sicher, dass alle eingehenden Daten validiert und bereinigt werden, um Sicherheitsrisiken wie SQL-Injection oder Cross-Site Scripting (XSS) zu vermeiden.
  • Datenbankoperationen: Ajax kann verwendet werden, um dynamische Datenbankabfragen durchzuführen, ohne die Seite neu laden zu müssen. Denken Sie daran, Prepared Statements in PHP zu verwenden, um die Datenbanksicherheit zu gewährleisten.
  • RESTful API: Für komplexere Anwendungen kann PHP genutzt werden, um eine RESTful API zu erstellen, die Ajax-Anfragen verarbeitet. Dies ermöglicht eine modulare und skalierbare Architektur.
  • Session Management: Ajax kann auch für Funktionen wie Benutzeranmeldung und -verwaltung eingesetzt werden. Stellen Sie sicher, dass Sessions und Cookies sicher gehandhabt werden.


Die Kombination von Ajax, PHP und jQuery ermöglicht die Entwicklung dynamischer, interaktiver und leistungsfähiger Webanwendungen. Durch die Verwendung fortgeschrittener Techniken wie JSON, Fehlerbehandlung, Promises und Async/Await können Entwickler effiziente und benutzerfreundliche Anwendungen erstellen. Die Beachtung von Sicherheitsaspekten und die Implementierung robuster Backend-Logik sind dabei unerlässlich für den Erfolg moderner Webprojekte.