Wer oder was ist AJAX?

26.03.2012

Ein Name zweier griechischer Helden aus Homers ‚Ilias’?
Ein Markenname für ein Sortiment von Reinigungsmitteln?
Eine Programmiertechnik für das World Wide Web (WWW)?
Und falls Letzteres, um was zu tun?

Ein Beitrag über moderne Web-Techniken.


Briefmarkenmotiv Ajax und Achill, zwei griechische Helden aus Homers Ilias.

Genau darum soll es in diesem Artikel gehen. Als Web-Programmiertechnik steht AJAX für Asynchronous JavaScript And XML.

Was hat das aber zu bedeuten?

Um das zu klären, werden wir uns ein wenig weiter umsehen müssen. Manche Leser werden das vielleicht als unbequem empfinden. Wenn Sie etwas, das Sie hier lesen, schon wussten, seien Sie doch einfach froh! Aber Sie dürfen nicht voraussetzen, dass alle das wissen. Oder dass die, die es noch nicht wussten, es auch gar nicht wissen wollten. Also ...

Wo findet die Technik, die uns interessiert, Verwendung? Im WWW (s.o.), einem Dienst, der über das Internet angeboten wird. Dieser Dienst versendet HTML-(HyperText Markup Language-)Dokumente nach den Regeln des HTTP (HyperText Transfer Protocol), um Text- und auch Bild-Inhalte (und letztlich noch andere multimediale Inhalte) in einer speziellen Lese-Software, genannt Browser, für Nutzer konsumierbar zu machen.

Eine typische Eingeweihten-Antwort, die mehr Fragen aufwirft, als sie beantwortet hat.

Das HTTP ist, einfach dargestellt, eine Sammlung von Verkehrsregeln für den Datenverkehr im WWW. Es kennt und erlaubt nicht das Herstellen einer dauerhaften Verbindung zwischen einem Client (Browser, Anforderer darzustellender Inhalte) und dem jeweiligen Server (Anbieter, Sender dieser Inhalte). Es funktioniert also nicht wie das Telefon, wo die einmal hergestellte Verbindung bestehen bleibt, bis einer/eine der TeilnehmerInnen auflegt -, gleichgültig, ob beide reden oder einander anschweigen.

Und HTML ist, wie der Name (s.o.) besagt, eine Sprache. HTML-Dokumente sind daher Texte, nichts Anderes. Texte, die außer den Buchstaben und Wörtern, aus denen Texte nun einmal bestehen, auch HTML-Markierungen enthalten. Mit ihnen wird die Bedeutung anderer Textteile charakterisiert. Zum Beispiel: Die zwei, drei Wörter zwischen zusammengehörigen Marken sollen zusammen eine Überschrift ergeben, die von der Marke danach bis zur folgenden bilden einen Absatz, jene dort gehören zu einer Liste, dann kommt wieder eine Zwischenüberschrift ... Und so weiter. Aber auch solche HTML-Anteile sind wieder nur Text.

Und wie kommen dann Bilder, Töne, Videos ins Web?

Sollen Bilder oder Töne oder sonst etwas, das eben kein Text ist, im Browser sichtbar oder hörbar werden, müssen die Verfasser eines HTML-Dokuments den Dateinamen einer Bild- oder Tondatei in den HTML-Code einfügen. Also wieder ein Stück Text.

Der Browser, das Lesegerät, ist es dann, das an der richtigen Stelle die Bild- oder Ton- oder Sonstwas-Datei vom Server (s.o.) abruft und an der richtigen Position in die Darstellung einbaut. Und für jede Datei, die benötigt wird, muss der Server neu angerufen werden, denn es gibt ja nach den Regeln des HTTP keine dauerhaften Verbindungen.

O je, wie umständlich!

Aber es kommt noch schlimmer. Wenn sich nun auf einer dargestellten Seite etwas ändern soll – vielleicht soll ein Bild gegen ein anderes ausgetauscht werden –, dann muss, weil ja der HTML-Code der Träger aller anderen Dateiaufrufe ist, auch das HTML-Dokument nochmals neu aufgerufen werden. Und wenn das aufgerufen wird, werden auch alle übrigen Dateien nochmals angefordert! Nicht nur das eine, das wir ändern wollten. Man sagt, die (HTML-)Seite muss neu geladen werden, und das schließt alle ihre Inhalte mit ein.

Hilfe!

Hier kommt die AJAX-Idee ins Spiel, und das heißt zunächst einmal: JavaScript. Das ist eine extra für Browser entwickelte Sprache, um eben dem Browser durch Programmierung ein paar Tricks beizubringen und abzuverlangen, die er von Haus aus nicht beherrscht. Und die man ihm jedenfalls via HTML nicht übergeben könnte.

Dazu muss allerdings ein Browser JavaScript ‚verstehen’. Zum Glück können das alle Browser seit einigen Jahren. Ein sogenanntes Plugin oder Addon zu installieren, ist nicht nötig. Aber die Ausführung der JavaScript-Anweisungen muss dem Browser erlaubt sein! Weil jedoch mit JavaScript-Browser-Programmierung im Lauf der Zeit leider auch viel Unfug getrieben wurde und noch werden kann, haben nicht wenige Nutzer ihrem Lieblingsprogramm das Ausführen der Befehle dieser Sprache untersagt.

Kein JavaScript, kein AJAX!

Wenn diese Technik aber funktioniert, kann sie den Browser auch zu Handlungen veranlassen, die nur mit HTML via HTTP nicht möglich gewesen wären.

  • Mit Hilfe von JavaScript kann der Browser mit dem Server Verbindung aufnehmen ohne die Darstellung der aktuellen Seite ändern oder gar erneuern zu müssen; sozusagen im Hintergrund.
  • Er kann die Befehle des Scripts weiter ausführen ohne erst auf die Antwort des Servers warten zu müssen. Das ist, was das Wort ‚asynchronous’, das erste A in AJAX, besagen soll.
  • Er kann jetzt auch Texte abrufen, die kein HTML-Code sind. Nämlich zum Beispiel (Code-)Text geschrieben in XML (Extensible Markup Language). Daher das X in AJAX. Und das bedeutet mehr Flexibilität bei der inneren Ordnung, der Struktur der zu übertragenden Daten. Denn ‚extensible’ heißt ja ‚erweiterbar’ und das ist das Wesentliche an XML!

Schön. Und was haben wir jetzt davon?

Ein paar Beispiele zum guten Schluss:

Wenn wir ein Online-Kartenwerk aufrufen und können den Ausschnitt der Welt, der zu sehen sein soll, nach Belieben vergrößern oder verkleinern und in jede Richtung verschieben ohne dass wir lange warten müssen, bis endlich das Gewünschte sich zeigt, und ohne dass die Rahmenseite ringsum auch nur zuckt oder gar neu geladen werden muss, dann genießen wir diesen Komfort, weil das Einblenden des Kartenausschnitts mit AJAX realisiert wurde.

Wenn wir einen Suchdienst unserer Wahl benützen und schon während der Eingabe des ersten Wortes im Browser Vorschläge erscheinen, wie wir weitertippen könnten oder Vorschläge für Suchbegriffe, die von anderen Nutzern eingegeben worden sind, dann geschieht das, weil AJAX im Spiel ist.

Wenn das so schön funktioniert: 
Warum wird dann nicht alles mit AJAX und XML übertragen?

Leider hat die Sache auch ein paar Nachteile.

Zuerst einmal den, dass die Technik gegenüber ‚normalen’ HTML-Seiten zusätzlichen Aufwand erfordert, der nicht in jedem Fall gerechtfertigt werden kann. Ich nehme nicht den 7,5-Tonner für die Wochenendeinkäufe, selbst wenn ich einen habe.

Ferner haben Browser zwar gelernt (innerhalb der auch sonst geltenden Grenzen), z. B. bei Benutzung eines Straßenkarten-Dienstes mit der Zurück-Funktion vom letzten zum vorletzten angewählten Kartenausschnitt zurückzuspringen. Schließt man aber den Browser und versucht nach einem Neustart über die History-Liste zu einem dieser Ausschnitte zurückzukehren, funktioniert das nicht.

Ebenso wenig ist es möglich, auf die Darstellung einer sogar namentlich eingegebenen Adresse ein Lesezeichen zu legen. Die Alternative dazu, das Speichern eines vom Dienstanbieter angebotenen Text-Links, wirkt vergleichsweise unkomfortabel.

Aber was nicht ist, kann ja noch werden. Wer weiß, was Browser in fünf Jahren können!

Oder noch später ...