JavaScript Ajax Beispiel 2: GET-Request

Im nächsten Beispiel wird wiederum ein GET-Request mit Hilfe von Ajax an den Webserver gerichtet. Zunächst muss ein Ajax-Request-Objekt erzeugt werden. Die Funktion getRequestObject übernimmt diese Aufgabe. Weiter unten wird diese Funktion aufgerufen (direkt nachdem die Seite durch den Browser geladen wurde) und deren Ergebnis – das XMLHttpRequest-Objekt – in einer Variablen gespeichert, so dass künftig darauf zugegriffen werden kann.

SendGetRequest, die nächste Funktion, schickt den Request an den Webserver und setzt als Event-Handler die Funktion handleEvent ein. Dabei werden die Parameter, welche per GET-Methode an den Server gesendet werden, in Form einer Zeichenkette an die Funktion übergeben. Beim Aufruf durch das Request-Objekt werden die Parameter an die URL angehängt und somit an das auf dem Webserver laufende Script übergeben.

Der durch die Funktion handleResponse beschriebene Event-Handler reagiert erst nachdem der Request vollständig abgeschlossen ist. Nach dem fehlerfreien Empfang der Nutzdaten, die im Request-Objekt in der Eigenschaft responseText gespeichert sind, speichert der Event-Handler diese Daten in einer dafür vorgesehenen Variablen. Das Ergebnis der Anfrage, die gelieferte Textdatei, wird dann durch die zum Window-Objekt gehörende JavaScript-Methode Alert in Form einer Dialogbox ausgegeben. Zum Schluß wird das Gegenstück des onLoad-Events dazu verwendet, einen eventuell noch laufenden Ajax-Request abzubrechen, wenn das Browserfenster während eines solchen Requests geschlossen wird. Beachten Sie auch das POST-Beispiel.

<a href="javascript:sendGetRequest ('name=Wilhelm&alter=52')" title="">GET Request senden</a>
<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Funktion erzeugt, in Abhängigkeit des benutzten Browsers, ein
// XMLHttpRequest-Objekt.
function getRequestObject () {
  // Wenn es sich bei dem vom Benutzer verwendeten Browser
  // um einen Internet Explorer handelt, wird das Request-Objekt
  // per ActiveX geholt.
  if (navigator.appName == "Microsoft Internet Explorer")
    return new ActiveXObject ("Microsoft.XMLHTTP");
  else
    // Bei anderen Browsern liegt das Request-Objekt direkt
    // unterhalb des Window-Objekts.
    return new XMLHttpRequest ();
}

// Folgende Funktion setzt einen HTTP-Request per GET-Methode ab.
function sendGetRequest (parameter) {
  // Verbindung zum Webservice per GET öffnen.
  // Der Service ist über das PHP-Script httprequesttest.php erreichbar.
  // Die Parameter, welche an das Script übergeben werden werden an die
  // URL angehängt.
  httpRequestObject.open ('GET', 'httprequesttest.php?' + parameter);
  // Event-Handler-Funktion handleResponse mit dem readystatechange-Event
  // verbinden. Diese Funktion wird immer dann ausgeführt, wenn sich
  // der Status der Abfrage ändert.
  httpRequestObject.onreadystatechange = handleResponse;
  // Zum Schluß wird die Anfrage an den Server gesendet.
  httpRequestObject.send (null);
}

// Event-Handler, die auf Änderungen beim readyState des XMLHttpRequest-Objekt
// die entsprechende Reaktion durchführt.
function handleResponse () {
  // Request abgeschlossen (readyState 4) und Server mit OK (Status 200) geantwortet?
  // Bei allen anderen Statusänderungen wird die Funktion zwar aufgerufen, aber
  // es wird nicht auf die Stati reagiert.
  if (httpRequestObject.readyState == 4 && httpRequestObject.status == 200) {
    // Request ist abgeschlossen und alle Daten angekommen
    // => Empfangene (Text)Daten in Variable speichern und in Dialogbox ausgeben
    var response = httpRequestObject.responseText;
    // Empfangene Daten werden in einer Dialogbox ausgegeben.
    alert (response);
  }
}

// HttpRequestObject per oben definierter Funktion erzeugen und
// in der Variablen speichern, damit künftig auf das Objekt zugegriffen
// werden kann.
var httpRequestObject = getRequestObject ();

// Wenn das Dokument geschlossen wird, müssen noch nicht beendete
// Requests abgebrochen werden.
window.onunload = httpRequestObject.abort ();
// -->
</script>

GET Request senden



¬ Insolvenzrecht