Das folgende Beispiel zeigt den Ablauf eines Ajax-Requests. Dabei werden die einzelnen Zustände, die während der Verarbeitung eines HTTP-Requests mit Ajax auftreten können, ausgegeben. Zu diesem Zweck wird eine auf dem Server vorhandene XML-Datei per Ajax-HTTP-Request abgerufen. Die Ausgabe der während des Vorgangs ermittelten Statusinformationen erfolgt im dafür vorgesehenen SPAN-Element mit der ID "status".
Um zu dem für einen Ajax-Request benötigten HTTP-Request-Objekt zu gelangen, muss man wieder einmal auf die Eigenarten bestimmter Browser eingehen. Während die meisten Browseranwendungen das vom W3C zur Standardisierung vorgesehene HTTP-Request-Objekt mit dem Namen XMLHttpRequest – welches per Window-Objekt erzeugt werden kann – unterstützt, nutzt der Internet Explorer wieder einmal eine ActiveX-Komponente um ein solches Objekt zu erzeugen.
Die unten definierte Funktion showStatusInformation() soll Informationen, die während des Ablauf des HTTP-Requests anfallen, ausgeben. Ausgegeben werden die gesammelten Informationen im HTML-Element mit der ID "status", welches unter Verwendung von getElementById() ermittelt wird.
Alle Zustände (readyState), die während des Ajax-Requests auftreten können, werden in einem Array mit ihrer Textbeschreibung angegeben. Der Index der Elemente im Array ist zugleich die Status-ID des jeweiligen readyState-Zustandes. Die im Array gespeicherten Zeichenketten beschreiben also den Zustand, in dem sich der Request gerade befindet.
Zu diesem Zweck werden einige DOM-Methoden aus dem JavaScript-Objekt Document verwendet. Dies sind zum Einen die Methode createElement, welche ein neues HTML-Element erzeugt, sowie die Methode createTextNode, die zur Erzeugung von Textknoten dient.
<!-- Feld zur Ausgabe von Statusinformationen über den Ajax-Request --> <span id="status"></span> <script language="javascript" type="text/javascript"> <!-- // JavaScript-Bereich für ältere Browser auskommentieren // Wenn es sich bei dem vom Benutzer verwendeten Browser // um einen Internet Explorer handelt, wird das Request-Objekt // per ActiveX geholt, oder ansonsten vom JavaScript Window-Objekt. var httpRequestObject = (navigator.appName == "Microsoft Internet Explorer") ? new ActiveXObject ("Microsoft.XMLHTTP") : new XMLHttpRequest (); // Variable zur Speicherung der Anzahl der erhaltenen Datenpakete var dataPackages = 0; // Status nach Erzeugung des Request-Objekts anzeigen showStatusInformation (); // Verbindung per GET öffnen und die XML-Datei testdatei.xml abrufen. httpRequestObject.open ('GET', 'testdatei.xml'); // Event-Handler-Funktion showStatusInformation mit dem readystatechange-Event // verbinden. Diese Funktion wird immer dann ausgeführt, wenn sich // der Status der Abfrage ändert. httpRequestObject.onreadystatechange = showStatusInformation; // Als nächstes wird die Anfrage an den Server gesendet. httpRequestObject.send (null); // Folgende Funktion gibt Statusinformationen aus, die bei den // einzelnen Schritten während des Ablaufs eines Ajax-Requests // abfragbar sind. function showStatusInformation () { // Zustandsbeschreibungen eines XMLHttpRequest (Zuordnung von // readyState und Statusbeschreibung) var readyStates = new Array ('unsent', 'open', 'sent', 'loading', 'done'); // Statusinformationen der Rückmeldung ausgeben var msg = 'Status des HTTP-Request:\n ' + 'readyState: ' + httpRequestObject.readyState + ' (' + readyStates[httpRequestObject.readyState] + ')\n '; // Wenn Daten empfangen werden (Status loading)... if (httpRequestObject.readyState == 3) // sollen die Datenpakete gezählt und deren bisherige Anzahl // ausgegeben werden. msg += 'Anzahl der bisher empfangenen Datenpakete: ' + (++dataPackages) + '\n '; // Folgende Informationen sind erst ab readyState > 1 definiert // und werden deshalb erst nach OPEN angezeigt. if (httpRequestObject.readyState > 1) msg += 'status: ' + httpRequestObject.status + ' (' + httpRequestObject.statusText + ')\n' + // An dieser Stelle wird nur ein Teil der Request-Header ausgegeben... // Eine vollständige Liste der einzelnen Request-Header eines Requests kann mit // httpRequestObject.getAllResponseHeaders() abgefragt werden. 'Informationen aus dem Request-Header:\n ' + 'Content-Type: ' + httpRequestObject.getResponseHeader ('Content-Type') + '\n ' + 'Content-Language:' + httpRequestObject.getResponseHeader ('Content-Language'); // Gesammelte Daten per DOM im dafür vorgesehenen HTML-Element ausgeben. // Jedesmal, wenn die Funktion aufgerufen wird, soll dann ein // neues PRE-Element erzeugt werden... var p = document.createElement ('pre'); // die auszugebenen Informationen in das Element eingefügt... p.appendChild (document.createTextNode (msg)); // und am Ende des Feldes für die Ausgabe angehängt werden. document.getElementById ('status').appendChild (p); } // --> </script>
¬ Menu
¬ Gratis Download
¬ Seminare
¬ Yoga
¬ Insolvenzrecht
¬ News
15.08.2008Schleifen in PHP: Die While-Schleife » mehr 13.08.2008Nutzung von Variablen unter PHP: Definition, Sichtbarkeit und vordefinierte Variablen » mehr 11.08.2008Ausgabe von Datum und Zeit mit PHP nach Konvertierung in ein String » mehr Eine vollständige News-Liste ist auf der News-Seite zugänglich.
¬ Foren
¬ Buchtipp
JavaScript & AJAX, m. DVD-ROM
Weitere JavaScript Literaturtipps finden Sie unter JavaScript Bücher
Webdesign •
Beratung Internetseite •
Programmierung Internetseite