LX: "optimale" Ajax-Lib

Beitrag lesen

Bitte berücksichtige, das "AJAX" auf 2 Seiten stattfindet: auf dem Client und auf dem Server - auch wenn dem Client häufig die meiste Aufmerksamkeit zukommt.

Tatsächlich ist AJAX ein Konglomerat zweier Techniken, von denen oft nur eine zur Anwendung kommt: Asynchrones JavaScript und XML. Meistens will man nur HTML-Schnipsel hinzufügen, dann hat man eigentlich AJAH (Ausruf des Begreifens, dass das ja auch ohne XML geht) - oder man möchte JavaScript nachladen, dann bekommt man AJAJ (gesprochen: ei, ei - hauptsächlich deshalb, weil man mit wenig mehr Aufwand auch JSONp verwenden kann, was keine Same-Domain-Policy erfordert).

Die erste von beiden Techniken ist sogar relativ einfach implementiert:

var request = new window.XMLHttpRequest(); // ja, im IE6 geht das nicht, wenn Du fragst, sagen wir Dir auch, wie man das mit ActiveX korrigiert  
if (request) {  
   request.open([type], [url], [async]);  
   request.send([data]);  
   ...  
}

Zur Erläuterung: [type] ist der Request-Typ, meistens GET, manchmal POST; [url] ist die URL der Ressource, die vom Server nachträglich abgeholt werden soll; [async] ist true oder false, je nachdem, ob der Request asynchron gestartet werden soll oder nicht; [data] sind POST-Daten, bei einem GET-Request kann dieser Parameter leer bleiben.

Wenn async false oder nicht angegeben ist, kann danach in request.responseText die Antwort vom Server ausgelesen werden (so eine vorhanden ist). Ansonsten muss man darauf warten, dass das Event request.onreadystatechange auslöst und request.readyState==4 (erledigt) ist, innerhalb des Request-Handlers kann man dann auf request.responseText zugreifen.

Wenn man möchte, kann man sich diese Techniken auch durch Frameworks wie jQuery, mootools, etc. vereinfachen - muss dann aber in Kauf nehmen, dass man zwangsläufig eine Menge überflüssigen Code mitschleppt.

Gruß, LX

--
RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.