AJAX - XMLHttpRequest Object

Het XMLHttpRequest-object is de basis van AJAX.

  1. Maak XMLHttpRequest-object aan
  2. Definieer callback-functie
  3. Open een XMLHttpRequest-object
  4. Verzend een verzoek naar de server

XMLHttpRequest-object

Alle moderne browsers ondersteunen dit. XMLHttpRequest-object.

Het XMLHttpRequest-object kan worden gebruikt om achtergrondgegevens met een webserver uit te wisselen. Dit betekent dat delen van een webpagina kunnen worden bijgewerkt zonder dat de hele pagina opnieuw moet worden geladen.

Maak XMLHttpRequest-object aan

Alle moderne browsers (Chrome, Firefox, IE, Edge, Safari, Opera) hebben ingebouwde XMLHttpRequest-object.

Syntaxis voor het aanmaken van een XMLHttpRequest-object:

variable = new XMLHttpRequest();

Definieer callback-functie

Een callback-functie is een functie die als parameter aan een andere functie wordt doorgegeven.

In dit geval moet de callback-functie de code bevatten die moet worden uitgevoerd wanneer de respons gereed is.

xhttp.onload = function() {
  // Wat moet je doen wanneer de respons gereed is
}

Verstuur verzoek

Om een verzoek naar de server te sturen, kun je de XMLHttpRequest-objectmethoden gebruiken. open() en send() Methode:

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

Voorbeeld

// Maak XMLHttpRequest-object aan
const xhttp = new XMLHttpRequest();
// Definieer callback-functie
xhttp.onload = function() {
  // Hier kun je gegevens gebruiken
}
// Verzend verzoek
xhttp.open("GET", "ajax_info.txt");
xhttp.send();

Probeer het zelf uit

Toegang over domeinen (Access Across Domains)

Vanwege veiligheidsredenen staat moderne browsers geen toegang over domeinen toe.

Dit betekent dat de webpagina en het XML-bestand dat het probeert te laden op dezelfde server moeten staan.

De voorbeelden op CodeW3C.com openen XML-bestanden die zich in het domein CodeW3C.com bevinden.

Als je de bovenstaande voorbeelden op een van je eigen webpagina's wilt gebruiken, moet het XML-bestand zich op je eigen server bevinden.

Methoden van het XMLHttpRequest-object

Methode Description
new XMLHttpRequest() Maak een nieuw XMLHttpRequest-object aan.
abort() Annuleer het huidige verzoek.
getAllResponseHeaders() Retourneer headerinformatie.
getResponseHeader() Retourneer specifieke headerinformatie.
open(method, url, async, user, psw)

Bepaal het verzoek.

  • methodVerzoekstype GET of POST
  • urlBestandslocatie
  • asynctrue (asynchrone) of false (synchronische)
  • userOptionele gebruikersnaam
  • pswOptionele wachtwoord
send() Verstuur een verzoek naar de server, gebruikt voor GET-verzoeken.
send(string) Verstuur een verzoek naar de server, gebruikt voor POST-verzoeken.
setRequestHeader() Voeg een tag/waarde-paar toe aan de te verzenden header.

Eigenschappen van het XMLHttpRequest-object

Property Description
onload Definieer de functie die wordt aangeroepen wanneer een (laad)verzoek wordt ontvangen.
onreadystatechange Definieer de functie die wordt aangeroepen wanneer het readyState-eigenschap verandert.
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 response data as a string.
responseXML Return response data as XML data.
status

Return the status number 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 (e.g. "OK" or "Not Found")

onload property

When using XMLHttpRequest objects, you can define a callback function to execute when a response is received.

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

Voorbeeld

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

Probeer het zelf uit

Multiple callback functions

If there are multiple AJAX tasks on the website, then 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.

Voorbeeld

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 Property saves the state of XMLHttpRequest.

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

status Properties and statusText 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 number of the request

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

For a complete list, please visit Http Message Reference Manual

statusText statusText

Returneert de status tekst (bijvoorbeeld "OK" of "Not Found").

Elke keer dat de readyState verandert, wordt de onreadystatechange-functie aangeroepen. 4 en status is 200 als de respons klaar is:

Voorbeeld

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();
}

Probeer het zelf uit

Het onreadystatechange-evenement wordt vier keer (1-4) geactiveerd, elke keer dat de readyState verandert.