AJAX - XMLHttpRequest objekt
- Forrige side AJAX introduktion
- Næste side AJAX-anmodning
XMLHttpRequest-objektet er fundamentet for AJAX.
- Opret XMLHttpRequest-objektet
- Definer callback-funktionen
- Åbn XMLHttpRequest-objektet
- Send forespørgsel til serveren
XMLHttpRequest-objektet
Alle moderne browsere understøtter det XMLHttpRequest-objektet.
XMLHttpRequest-objektet kan bruges til at udveksle data med en webserver i baggrunden. Dette betyder, at man kan opdatere dele af en webside uden at skulle genindlæse hele siden.
Opret XMLHttpRequest-objektet
Alle moderne browsere (Chrome, Firefox, IE, Edge, Safari, Opera) har indbygget XMLHttpRequest-objektet.
Syntaksen til at oprette et XMLHttpRequest-objekt:
variable = new XMLHttpRequest();
Definer callback-funktionen
Callback-funktioner er funktioner, der passes som parameter til en anden funktion.
I dette tilfælde skal callback-funktionen indeholde kode, der skal køres, når svaret er klar.
xhttp.onload = function() { // Hvad der skal gøres, når svaret er klar }
Send forespørgsel
For at sende en forespørgsel til serveren kan du bruge XMLHttpRequest-objektets open()
og send()
Metode:
xhttp.open("GET", "ajax_info.txt"); xhttp.send();
Eksempel
// Opret XMLHttpRequest-objektet const xhttp = new XMLHttpRequest(); // Definerer callback-funktionen xhttp.onload = function() { // Du kan bruge data her } // Send forespørgsel xhttp.open("GET", "ajax_info.txt"); xhttp.send();
Krydsdomæneadgang (Access Across Domains)
Af sikkerhedsmæssige grunde tillader moderne browsere ikke krydsdomæneadgang.
Dette betyder, at hjemmesiden og den XML-fil, den forsøger at indlæse, skal være placeret på samme server.
Eksempler på CodeW3C.com åbner XML-filer placeret i domænet CodeW3C.com.
Hvis du vil bruge et af de ovennævnte eksempler på din egen hjemmeside, skal den XML-fil, du loader, være placeret på din egen server.
Metoder for XMLHttpRequest-objektet
Metode | Beskrivelse |
---|---|
new XMLHttpRequest() | Opret et nyt XMLHttpRequest-objekt. |
abort() | Annuller den aktuelle forespørgsel. |
getAllResponseHeaders() | Returnerer hovedinformationer. |
getResponseHeader() | Returnerer specifikke hovedinformationer. |
open(method, url, async, user, psw) |
Definerer forespørgslen.
|
send() | Send forespørgsel til serveren, brugt til GET-forespørgsler. |
send(string) | Send forespørgsel til serveren, brugt til POST-forespørgsler. |
setRequestHeader() | Tilføj et etiket/værdi-par til de hoveder, der skal sendes. |
Egenskaber for XMLHttpRequest-objektet
Egenskab | Beskrivelse |
---|---|
onload | Definerer funktionen, der kaldes, når en (indlæsnings)forespørgsel modtages. |
onreadystatechange | Definerer funktionen, der kaldes, når readyState-ejenskaben ændres. |
readyState |
Gemmer XMLHttpRequest's status
|
responseText | Returnerer svarets data som en streng |
responseXML | Returnerer svarets data som XML |
status |
Returnerer statuskoden for anmodningen
For en fuld liste besøg venligst HTTP besked reference håndbog |
statusText | Returnerer status teksten (f.eks. "OK" eller "Ikke fundet") |
onload egenskab
Når du bruger XMLHttpRequest-objektet, kan du definere en callback-funktion, der udføres, når svaret modtages
Definer en callback-funktion i XMLHttpRequest-objektet onload
Funktionen defineres i attributten:
Eksempel
xhttp.onload = function() { document.getElementById("demo").innerHTML = this.responseText; } xhttp.open("GET", "ajax_info.txt"); xhttp.send();
Flere callback-funktioner
Hvis der er flere AJAX-opgaver på webstedet, skal der oprettes en funktion til at udføre XMLHttpRequest-objektet, og en callback-funktion skal oprettes for hver AJAX-opgave
Funktion kaldet skal indeholde URL samt funktionen, der skal kaldes, når svaret er klar
Eksempel
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) { // Her er handlingen } function myFunction2(xhttp) { // Her er handlingen }
onreadystatechange egenskab
readyState
Egenskaben gemmer XMLHttpRequest's status
onreadystatechange
Egenskaben definerer en callback-funktion, der udføres, når readyState ændres
status
Egenskaber og statusText
Egenskaben gemmer XMLHttpRequest-objektets status
Egenskab | Beskrivelse |
---|---|
onreadystatechange | Definerer funktionen, der skal kaldes, når readyState-attributten ændres |
readyState |
Gemmer XMLHttpRequest's status
|
status |
Returnerer statuskoden for anmodningen
For en fuld liste besøg venligst HTTP besked reference håndbog |
statusText | statusText |
Retur status tekst (f.eks. "OK" eller "Ikke Fundet").
onreadystatechange-funktionen kaldes hver gang readyState ændres. 4
og status er 200
Når responsen er klar:
Eksempel
function loadDoc() { const xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { hvis (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xhttp.open("GET", "ajax_info.txt"); xhttp.send(); }
onreadystatechange-hændelsen blev udløst fire gange (1-4), hver gang readyState ændredes en gang.
- Forrige side AJAX introduktion
- Næste side AJAX-anmodning