Springe zum Hauptinhalt
Universitätsrechenzentrum
jQuery
Universitätsrechenzentrum 

Asynchronous JavaScript and XML --- Ajax

  • asynchrone Datenübertragung zwischen Browser und Webserver während die Webseite angezeigt wird
  • Veränderung der Darstellung der Webseite durch Manipulation von DOM-Elementen ohne neu laden

typische Probleme:

  • Zurück -Button
  • Polling durch Browser

Grundlagen

das Objekt XMLHttpRequest
  • Methoden:
    • abort() --- Anfrage beenden, noch ankommende Daten werden nicht ausgewertet
    • getAllResponseHeaders() --- alle vom Server gesendeten Headerfelder als String
    • getResponseHeader(name) --- liefert das mit name bezeichnetet Headerfeld
    • open(method, url, [asyncflag], [user], [password]) --- Parameter für Verbindungsdaten
    • send(content) --- Übermitteln der Anfrage, content enthält die zu übermittelnden Daten (nur bei POST -Methode)
    • setRequestHeader(name, value) --- Definition individueller Headerfelder
    • setMimeType(mimetype) --- setzt den Mimetype für für die angeforderten Daten

  • Eigenschaften:
    • onreadystatechange --- Eventhandler, welcher bei jedem Statuswechsel der Anfrage aufgerufen wird
    • readyState --- enthält den aktuellen Verbindungsstatus
    • responseText --- enthält die vom Server gesendetet Antwort als Text
    • responseXML --- ... als XML-Baum
    • status --- http-Status als Fehlercode bzw. statusText als String

ein einfaches Beispiel

load(url, parameter, callback)

Lädt Daten von einem URL und ersetzt den Inhalt des ausgewählten Elementsets.
Parameter werden mit der POST -Methode übermittelt, wenn die Daten als Objekt (z.B. JSON) vorliegen. Andernfalls wird die GET -Methode verwendet.
Der callback -Funktion werden Response, Status und XHR-Instance übergeben.
Beispiel: Ein PHP -Script liefert eine Ausgabe (HTML -Code) und ersetzt damit den Inhalt des Elements (mit der ID output).

$("#output").load('ajaxtest.php', function(data, status, xhr) {
  $("#output").append("<br/><i>Status: "+status+"</i>");
  $("#output").append("<br/> "+xhr.getAllResponseHeaders());
});

In welcher Weise die vom Server zu übermittelnde Antwort erzeugt wird, spielt keine Rolle!

Beachte bei der Adressierung von Abfragen die Same Origin Policy!

Daten senden

serialize()

Generiert einen formatierten String (für die Datenübermittlung via GET) aus allen zur Elementeauswahl gehörenden Formularelementen. Deaktivierte, leere bzw. nicht ausgewählte Formularelemente werden nicht beachtet.
Beispiel: Erzeuge einen formatierten String aus allen input und select -Elementen und stelle diesen im Element mit der ID output dar.

$("#output").html($("input,select").serialize());

serializeArray()

Generiert ein JavaScript-Array aus allen zur Elementeauswahl gehörenden Formularelementen. Das Ergebnis kann als JSON-String weiterverarbeitet werden.

$.get(url, parameter, callback)

Initiiert einen GET -Request. Zu übermittelnde Parameter können im URL oder im parameter -Feld übergeben. Die callback -Funktion enthält die Response und den Status.

/* $.get("ajaxtest.php?"+$("input,select").serialize(), ...  */
$.get("ajaxtest.php", $("input,select").serialize(), function(data) {
  $("#output").html(data);
});

$.post(url, parameter, callback)

Initiiert einen POST -Request. Zu übermittelnde Parameter werden im parameter -Feld übergeben. Die callback -Funktion enthält die Response und den Status.

$.post("ajaxtest.php", $("input,select").serializeArray(), function(data) {
  $("#output").html(data);
});

Datenformate für die Kommunikation

Die Antworten können in verschiedenen Formaten übermittelt werden. Die Auswahl eines geeigneten Formates ergibt sich aus den Anforderungen.

JSONP (JSON mit padding) erzwingt die Bedingung der Same Origin Policy nicht!

Auswerten der übertragenen Daten

Text

Einfache Möglichkeit, Daten zu übermitteln. Strukturierung beispielsweise durch HTML-Tags. Direkte Darstellung von übermittelten HTML-Fragmenten. (z.B. Textausgaben oder <option> -Tags für <select> -Elemente)

XML

Als Format für die Übermittelung hierarchisch strukturierter Daten. Die übermittelten Daten werden im Browser geparst und als DOM dargestellt.

Der Zugriff auf die Elemente erfolgt über die JavaScript-Methoden getElementById(), getElementByName(), getElementsByTagName(), getElementsByTagNameNS().

JSON

JavaScript Object Notation mit nahezugleicher Funktionalität wie XML, dafür weniger komplex. jQuery stellt Methoden für die Übermittelung und Auswertung der Daten bereit.

Notationsbeispiel:

{ "uid":"20934",
  "gid":"4000",
  "user_name":"Otto Normalverbraucher",
  "home":"/afs/tu-chemnitz.de/home/urz/o/otto",
  "shell":"/bin/bash",
  "mail_addr": { "alias1":"otto@hrz.tu-chemnitz.de",
                 "alias2":"otto.normal@hrz.tu-chemnitz.de" }
}

$.getJSON(url, parameters, callback)

Die Methode getJSON() wird beim Abfragen von JSON -Daten eingesetzt. In der callback -Funktion stehen die übermittelten Daten als Objekt (Array) zur Verfügung. Die Daten werden mit der GET -Methode übermittelt.
Beispiel: Übermittle die Daten user=otto an den URL json_data.php und zeige die übermittelten Daten als Name:Value -Paare an.

$.getJSON('json_data.php', { user:'otto' }, function(data) {
  $.each(data, function(n,v) {
    $("#output").append(n+": "+v+"<br/>");
  });
  $("#output").append("Mail 1: "+data.mail_addr.alias1);
});

Steuerung von Ajax-Request

Die $.ajax -Methode stellte Optionen zur Steurung von Ajax-Requests bereit.

$.ajax({ url: 'request_url',
         type: 'POST',
         dataType: 'text',
         timeout: 3500, 
         data: { Parameter, Request Data },
         beforeSend: function() { 
           do_anything_before_send();  },
         error: function() { 
           handle_errors(); },
         success: function(data) {
           handle_response_data(); }
});

$.ajaxSetup(options)

Festlegen von Standardeinstellungen für alle folgenden Ajax-Requests.

$.ajaxSetup({ type: 'POST',
              dataType: 'xml',
              timeout: 3500, 
              error: function(xhr) {
                $("#debug").html("Fehler: "+xhr.statusText);
              }
});

ajaxStart(callback)

ajaxSend(callback)

ajaxSuccess(callback)

ajaxError(callback)

ajaxComplete(callback)

ajaxStop(callback)

Registrieren von Funktionen für Ajax-Events. Siehe auch http://api.jquery.com/category/ajax/.

  • Blick in einen vollbesetzten Hörsaal.

    Umfangreicher Service für Studieninteressierte

    Für einen optimalen Start ins Wintersemester 2026/2027: TU Chemnitz bietet neben dem Servicetelefon individuelle Beratungsgespräche und Informationen im Internet an – Einschreibung in zulassungsfreie Studiengänge ist noch bis zum 31. Oktober 2026 möglich …

  • Eine Frau blickt in die Kamera

    Workshop bringt Forschung und Praxis zur Sexarbeit zusammen

    Zwölfter Interdisziplinärer Workshop „Kritische Sexarbeitsforschung“ vom 13. bis 15. November 2026 in Chemnitz. Öffentliche Abendveranstaltung lädt zum Austausch zwischen Forschung und Praxis ein …

  • Ein saniertes Gebäude

    Mit KI reden – und 30 Euro für 45 Minuten verdienen

    Professur Arbeitswissenschaft und Innovationsmanagement der TU Chemnitz sucht Versuchspersonen für eine Vor-Ort-Studie zur Interaktion mit KI-gestützten Sprachassistenten …

  • Drei junge Menschen schauen in die Kamera

    TUCgraduate Day am 10. November 2026

    Internationale Forschungsaufenthalte, Netzwerke und Karrierewege sind 2026 die Schwerpunktthemen des TUCgraduate Day der TU Chemnitz – Anmeldung ab sofort möglich …