AJAX - XMLHttpRequest-objekti
- Edellinen sivu AJAX-esittely
- Seuraava sivu AJAX-pyyntö
XMLHttpRequest-objekti on AJAX:n perusta.
- Luo XMLHttpRequest-objekti
- Määritä paluufunktio
- Avaa XMLHttpRequest-objekti
- Lähetä pyyntö palvelimelle
XMLHttpRequest-objekti
Kaikki nykyaikaiset selaimet tukevat sitä XMLHttpRequest-objekti.
XMLHttpRequest-objekti mahdollistaa taustalla olevan datanvaihdon Web-palvelimen kanssa. Tämä tarkoittaa, että voidaan päivittää sivun osia ilman, että koko sivu ladataan uudelleen.
Luo XMLHttpRequest-objekti
Kaikissa nykyaikaisissa selaimissa (Chrome, Firefox, IE, Edge, Safari, Opera) on sisäänrakennettu XMLHttpRequest-objekti.
XMLHttpRequest-objektin luomisen syntaksi:
variable = new XMLHttpRequest();
Määritä paluufunktio
Paluufunktio on funktio, joka välitetään toisen funktion parametrina.
Tässä tapauksessa paluufunktiolle tulisi sisältää koodi, joka suoritetaan, kun vastaus on valmis.
xhttp.onload = function() { // Tee tämä, kun vastaus on valmis }
Lähetä pyyntö
Jos haluat lähettää pyynnön palvelimelle, voit käyttää XMLHttpRequest-objektin open()
ja send()
Metodi:
xhttp.open("GET", "ajax_info.txt"); xhttp.send();
Esimerkki
// Luo XMLHttpRequest-objekti const xhttp = new XMLHttpRequest(); // Määritä paluufunktio xhttp.onload = function() { // Voit käyttää tietoja täällä } // Lähetä pyyntö xhttp.open("GET", "ajax_info.txt"); xhttp.send();
Ylialueellinen pääsy (Access Across Domains)
Turvallisuussyistä nykyaikaiset selaimet eivät salli ylialueellista pääsyä.
Tämä tarkoittaa, että verkkosivun ja siihen yritettävän XML-tiedoston on oltava samalla palvelimella.
Esimerkit CodeW3C.com:lla avataan CodeW3C.com-alueessa olevat XML-tiedostot.
Jos haluat käyttää yllä olevaa esimerkkiä omalla verkkosivullasi, sinun on ladattava XML-tiedosto omaan palvelimeesi.
XMLHttpRequest-objektin metodit
Metodi | Kuvaus |
---|---|
new XMLHttpRequest() | Luo uusi XMLHttpRequest-objekti. |
abort() | Peruuta nykyinen pyyntö. |
getAllResponseHeaders() | Palauta otsikkotiedot. |
getResponseHeader() | Palauta tiettyjä otsikkotietoja. |
open(method, url, async, user, psw) |
Määritä pyyntö.
|
send() | Lähetä pyyntö palvelimelle, käytetään GET-pyynnössä. |
send(string) | Lähetä pyyntö palvelimelle, käytetään POST-pyynnössä. |
setRequestHeader() | Lisää merkkiarvo-pari lähetettävään otsikkoon. |
XMLHttpRequest-objektin ominaisuudet
Ominaisuus | Kuvaus |
---|---|
onload | Määritä funktio, joka kutsutaan vastaanotettaessa (latausta) pyyntöä. |
onreadystatechange | Määritä funktio, joka kutsutaan, kun readyState-ominaisuus muuttuu. |
readyState |
Tallentaa XMLHttpRequest:n tilan.
|
responseText | responseText |
Palauttaa vastausdatan merkkijonona. | responseXML |
status |
Palauttaa pyynnön tilan numeron
Täydellinen luettelo löytyy vierailemalla Http viestin viittausopas |
statusText | Palauttaa vastausdatan XML-datan muodossa. |
Palauttaa tilatextin (esim. "OK" tai "Ei löydy")
onload ominaisuus
Kun käytetään XMLHttpRequest-objektia, voit määrittää paluutoiminnon, joka suoritetaan, kun vastaus vastaanotetaan. onload
Määritä toiminto ominaisuudessa:
Esimerkki
xhttp.onload = function() { document.getElementById("demo").innerHTML = this.responseText; } xhttp.open("GET", "ajax_info.txt"); xhttp.send();
Useita paluutoimintoja
Jos verkkosivustolla on useita AJAX-tehtäviä, tulisi luoda funktio, joka suorittaa XMLHttpRequest-objektin, ja luoda paluutoiminto jokaiselle AJAX-tehtävälle.
Funktiokutsussa tulisi olla URL ja funktio, joka kutsutaan, kun vastaus on valmis.
Esimerkki
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) { // Tässä on toiminto } function myFunction2(xhttp) { // Tässä on toiminto }
onreadystatechange ominaisuus
readyState
Ominaisuus tallentaa XMLHttpRequest:n tilan.
onreadystatechange
Ominaisuus määrittää paluutoiminnon, joka suoritetaan, kun readyState muuttuu.
status
Ominaisuus ja statusText
Ominaisuus tallentaa XMLHttpRequest-objektin tilan.
Ominaisuus | Kuvaus |
---|---|
onreadystatechange | Määrittää toiminnon, joka kutsutaan, kun readyState-ominaisuus muuttuu. |
readyState |
Tallentaa XMLHttpRequest:n tilan.
|
status |
Palauttaa pyynnön tilan numeron
Täydellinen luettelo löytyy vierailemalla Http viestin viittausopas |
statusText | statusText |
Palauta tilatexti (esimerkiksi "OK" tai "Not Found").
Valmiustila muuttuu aina, kun readyState muuttuu, ja kutsuu onreadystatechange-funktiota. 4
ja status on 200
Kun vastaus on valmis:
Esimerkki
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(); }
onreadystatechange-tapahtuma käynnistyi neljä kertaa (1-4), ja valmiustila muuttui joka kerta.
- Edellinen sivu AJAX-esittely
- Seuraava sivu AJAX-pyyntö