AJAX - XMLHttpRequest Objekt

Das XMLHttpRequest-Objekt ist der Grundstein von AJAX.

  1. Erstellen Sie ein XMLHttpRequest-Objekt
  2. Definiert eine Callback-Funktion
  3. Öffnen Sie das XMLHttpRequest-Objekt
  4. Anfrage an den Server senden

XMLHttpRequest-Objekt

Alle modernen Browser unterstützen dies. XMLHttpRequest-Objekt.

Das XMLHttpRequest-Objekt kann zum Austausch von Daten im Hintergrund mit dem Web-Server verwendet werden. Dies bedeutet, dass nur Teile der Webseite aktualisiert werden können, ohne dass die gesamte Seite neu geladen werden muss.

Erstellen Sie ein XMLHttpRequest-Objekt

Alle modernen Browser (Chrome, Firefox, IE, Edge, Safari, Opera) haben ein integriertes XMLHttpRequest-Objekt.

Syntax zum Erstellen eines XMLHttpRequest-Objekts:

variable = new XMLHttpRequest();

Definiert eine Callback-Funktion

Eine Callback-Funktion ist eine Funktion, die als Parameter an eine andere Funktion übergeben wird.

In diesem Fall sollte die Callback-Funktion den Code enthalten, der beim Bereitsein der Antwort ausgeführt werden soll.

xhttp.onload = function() {
  // Was soll getan werden, wenn die Antwort bereit ist
}

Senden Sie die Anfrage

Um eine Anfrage an den Server zu senden, können Sie das XMLHttpRequest-Objekt verwenden open() und send() Methode:

xhttp.open("GET", "ajax_info.txt");
xhttp.send();

Beispiel

// Erstellen Sie das XMLHttpRequest-Objekt
const xhttp = new XMLHttpRequest();
// Definiert die Callback-Funktion
xhttp.onload = function() {
  // Hier können Sie Daten verwenden
}
// Anfrage senden
xhttp.open("GET", "ajax_info.txt");
xhttp.send();

Probieren Sie es selbst aus

Cross-Domain-Zugriff (Access Across Domains)

Aus Sicherheitsgründen erlauben moderne Browser keine Cross-Domain-Zugriffe.

Das bedeutet, dass die Webseite und die XML-Datei, die sie versucht zu laden, auf demselben Server liegen müssen.

Die Beispiele auf CodeW3C.com öffnen XML-Dateien im CodeW3C.com-Domänennamen.

Wenn Sie den obigen Beispielcode auf einer Ihrer eigenen Webseiten verwenden möchten, muss die XML-Datei, die Sie laden, auf Ihrem eigenen Server liegen.

XMLHttpRequest-Objekt-Methode

Methode Description
new XMLHttpRequest() Erstellt ein neues XMLHttpRequest-Objekt.
abort() Storniert die aktuelle Anfrage.
getAllResponseHeaders() Gibt Header-Informationen zurück.
getResponseHeader() Gibt spezifische Header-Informationen zurück.
open(method, url, async, user, psw)

Legt die Anfrage fest.

  • methodAnfrageart GET oder POST
  • urlDateiposition
  • asynctrue (asynchron) oder false (synchron)
  • userOptionaler Benutzername
  • pswOptionaler Passwort
send() Sendet eine Anfrage an den Server, die für GET-Anfragen verwendet wird.
send(string) Sendet eine Anfrage an den Server, die für POST-Anfragen verwendet wird.
setRequestHeader() Fügt ein Tag/Wert-Paar zu den zu sendenden Header hinzu.

XMLHttpRequest-Objekt-Attribute

Property Description
onload Definiert die Funktion, die aufgerufen wird, wenn eine (Lade-)Anfrage empfangen wird.
onreadystatechange Definiert die Funktion, die aufgerufen wird, wenn sich der readyState-Attribut ändert.
readyState

Save the state of XMLHttpRequest.

  • 0: The request has not been initialized
  • 1: The server connection has been established
  • 2: The request has been received
  • 3: The request is being processed
  • 4: The request has been completed and the response is ready
responseText Return the response data as a string.
responseXML Return the response data in XML format.
status

Return the status code of the request

  • 200: "OK"
  • 403: "Forbidden"
  • 404: "Not Found"

For a complete list, please visit HTTP Message Reference Manual

statusText Return the status text (such as "OK" or "Not Found")

onload property

When using the XMLHttpRequest object, you can define a callback function to be executed when the response is received.

Please define the function in the XMLHttpRequest object: onload The function is defined in the property:

Beispiel

xhttp.onload = function() {
  document.getElementById("demo").innerHTML = this.responseText;
}
xhttp.open("GET", "ajax_info.txt");
xhttp.send();

Probieren Sie es selbst aus

Multiple callback functions

If there are multiple AJAX tasks on the website, a function to execute the XMLHttpRequest object should be created, and a callback function should be created for each AJAX task.

The function call should include the URL and the function to be called when the response is ready.

Beispiel

loadDoc("url-1", myFunction1);
loadDoc("url-2", myFunction2);
function loadDoc(url, cFunction) {
  const xhttp = new XMLHttpRequest();
  xhttp.onload = function() {cFunction(this);}
  xhttp.open("GET", url);
  xhttp.send();
}
function myFunction1(xhttp) {
  // This is the action
}
function myFunction2(xhttp) {
  // This is the action
}

onreadystatechange property

readyState The property saves the state of XMLHttpRequest.

onreadystatechange The property defines a callback function that is executed when the readyState changes.

status Properties and statusText The property saves the state of the XMLHttpRequest object.

Property Description
onreadystatechange Define the function to be called when the readyState property changes.
readyState

Save the state of XMLHttpRequest.

  • 0: The request has not been initialized
  • 1: The server connection has been established
  • 2: The request has been received
  • 3: The request is being processed
  • 4: The request has been completed and the response is ready
status

Return the status code of the request

  • 200: "OK"
  • 403: "Forbidden"
  • 404: "Not Found"

For a complete list, please visit HTTP Message Reference Manual

statusText statusText

Rückgabestatus als Text (z.B. "OK" oder "Not Found").

Der onreadystatechange-Funktion wird jedes Mal aufgerufen, wenn der readyState geändert wird. 4 und status ist 200 Wenn, dann ist die Antwort bereit:

Beispiel

function loadDoc() {
  const xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML =
      this.responseText;
    }
  };
  xhttp.open("GET", "ajax_info.txt");
  xhttp.send();
}

Probieren Sie es selbst aus

Das onreadystatechange-Ereignis wird viermal (1-4) ausgelöst, wobei der readyState jedes Mal geändert wird.