Asynchronous Javascript and XML (AJAX)
Eintrag zuletzt aktualisiert am: 30.04.2018
Basis für Single Page Applications (SPAs) ist die Technologie Asynchronous
JavaScript and XML (AJAX), die abseits der üblichen HTTP-Rundgänge (Roundtrips) Aufrufe des
Webservers vom Browser ermöglicht. Der Browser löst einen AJAX-Arufruf aus gegen eine HTTP-
URL. Von der
URL erhält er Daten, die er zur Aktualisierung der Webseite per Document Object Model (DOM) verwendet. AJAX-Aufrufe transportieren heutzutage aber meist nicht mehr XML-Dokumente, sondern
JSON-Daten.
GESCHICHTE
Der Begriff AJAX wurde erstmals im Februar 2005 von Jesse James Garrett in [
http://adaptivepath.org/ideas/ajax-new-approach-web-applications/] verwendet. Wirklich neu an AJAX war aber nur der Name; die Idee der entfernten Prozeduraufrufs aus dem Browser heraus wurde erstmals im Jahr 1998 von Microsoft im
Internet Explorer 4.0 in Form des Microsoft
Remote Scripting (
MSRS) verwendet.
MSRS basierte auf einem Java
Applet. Im
Internet Explorer 5.0 ist später das
XmlHttpRequest-Objekt erschienen, das noch heute Basis in dieser Form im
Internet Explorer und anderen Browsern existiert und jetzt den Kern von AJAX bildet. Moderne Browser verwenden aber nicht mehr das
XmlHttpRequest-Objekt, sondern das Fetch
API [
https://fetch.spec.whatwg.org/].
Im
Internet Explorer ist XML-HTTP durch ein
COM-Objekt (Microsoft.XmlHttp) realisiert, in Mozilla (Netspace, Firefox, Safari, etc.) durch das eingebaute Objekt XMLHttpRequest. So genannte AJAX-Frameworks vereinfachen die Handhabung stark vereinfachen und eine Abstraktion bieten, sodass aus
JavaScript heraus Funktionen eines Proxies aufgerufenen werden, die auf dem Server als Funktionsaufrufe signalisiert werden.
Aufgrund der Tatsache, dass die XML-HTTP-Unterstützung im
Internet Explorer ein
COM-Objekt ist, können kann AJAX nur funktionieren, wenn in den Sicherheitseinstellungen des
Internet Explorers für die jeweilige Zone »Script
ActiveX controls marked safe for scripting« aktiviert ist.
Moderne Browser verwenden aber nicht mehr das
XmlHttpRequest-Objekt, sondern das Fetch
API [
https://fetch.spec.whatwg.org/].
https://fetch.spec.whatwg.org/