JS Tutoriaal

JS TUIS JS Inleiding JS Waarheen JS Uitset JS Verklarings JS sintaksis JS Kommentaar JS veranderlikes JS Laat JS Konst JS-operateurs JS Rekenkunde JS Opdrag JS datatipes JS Funksies JS Voorwerpe JS Events JS Strings JS String Metodes JS String Soek JS String Templates JS nommers JS-nommermetodes JS Skikkings JS Skikking Metodes JS Array Sorteer JS Skikking Iterasie JS Array Konst JS Datums JS Datum Formate JS Datum Kry Metodes JS Datum Stel Metodes JS Wiskunde JS Random JS Booleans JS Vergelykings JS Voorwaardes JS Skakelaar JS Loop Vir JS Loop For In JS Loop Vir Van JS Loop Terwyl JS Break JS Iterables JS-stelle JS Kaarte JS tipe JS Tipe Omskakeling JS Bitwise JS RegExp JS foute JS Bestek JS Hysing JS Streng modus JS hierdie sleutelwoord JS Arrow Funksie JS Klasse JS JSON JS Ontfouting JS Stylgids JS Beste Praktyke JS foute JS prestasie JS Voorbehou Woorde

JS weergawes

JS weergawes JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS Geskiedenis

JS Voorwerpe

Voorwerpdefinisies Voorwerp Eienskappe Voorwerp Metodes Voorwerp vertoon Voorwerptoebehore Voorwerpkonstrukteurs Voorwerpprototipes Object Iterables Voorwerpstelle Voorwerpkaarte Voorwerpverwysing

JS Funksies

Funksie definisies Funksie parameters Funksie Aanroep Funksie oproep Funksie Pas toe Funksie sluitings

JS Klasse

Klasintro Klas Erfenis Klas Staties

JS Async

JS Terugbelle JS Asynchroon JS Beloftes JS Async/Wag

JS HTML DOM

DOM Inleiding DOM Metodes DOM-dokument DOM Elemente DOM HTML DOM-vorms DOM CSS DOM-animasies DOM-geleenthede DOM Gebeurtenis Luisteraar DOM-navigasie DOM nodusse DOM Versamelings DOM Node lyste

JS Browser BOM

JS venster JS skerm JS ligging JS Geskiedenis JS Navigator JS Popup Alert JS Tydsberekening JS koekies

JS Web API's

Web API Inleiding Webvorms API Webgeskiedenis API Webberging API Webwerker API Web haal API Web Geolocation API

JS AJAX

AJAX Intro AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

JS JSON

JSON Inleiding JSON-sintaksis JSON vs XML JSON-datatipes JSON Ontleed JSON Stringify JSON-voorwerpe JSON-skikkings JSON-bediener JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery keurders jQuery HTML jQuery CSS jQuery DOM

JS grafika

JS grafika JS Canvas JS Plot JS Chart.js JS Google Chart JS D3.js

JS Voorbeelde

JS Voorbeelde JS HTML DOM JS HTML-invoer JS HTML-voorwerpe JS HTML-geleenthede JS Blaaier JS Redakteur JS Oefeninge JS Vasvra JS Sertifikaat

JS Verwysings

JavaScript-voorwerpe HTML DOM-voorwerpe


AJAX - Die XMLHttpRequest Object

Die sluitsteen van AJAX is die XMLHttpRequest-objek.

  1. Skep 'n XMLHttpRequest-objek
  2. Definieer 'n terugbelfunksie
  3. Maak die XMLHttpRequest-objek oop
  4. Stuur 'n versoek na 'n bediener

Die XMLHttpRequest-objek

Alle moderne blaaiers ondersteun die XMLHttpRequestvoorwerp.

Die XMLHttpRequestvoorwerp kan gebruik word om data met 'n webbediener agter die skerms uit te ruil. Dit beteken dat dit moontlik is om dele van 'n webblad op te dateer, sonder om die hele bladsy te herlaai.


Skep 'n XMLHttpRequest-objek

Alle moderne blaaiers (Chrome, Firefox, IE, Edge, Safari, Opera) het 'n ingeboude XMLHttpRequestvoorwerp.

Sintaksis vir die skep van 'n XMLHttpRequestvoorwerp:

variable = new XMLHttpRequest();

Definieer 'n terugbelfunksie

'n Terugbelfunksie is 'n funksie wat as 'n parameter na 'n ander funksie oorgedra word.

In hierdie geval moet die terugbelfunksie die kode bevat om uit te voer wanneer die antwoord gereed is.

xhttp.onload = function() {
  // What to do when the response is ready
}

Stuur 'n versoek

Om 'n versoek na 'n bediener te stuur, kan jy die oop() en stuur() metodes van die XMLHttpRequestobjek gebruik:

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

Voorbeeld

// Create an XMLHttpRequest object
const xhttp = new XMLHttpRequest();

// Define a callback function
xhttp.onload = function() {
  // Here you can use the Data
}

// Send a request
xhttp.open("GET", "ajax_info.txt");
xhttp.send();

Toegang oor domeine heen

Om sekuriteitsredes laat moderne blaaiers nie toegang oor domeine heen toe nie.

Dit beteken dat beide die webblad en die XML-lêer wat dit probeer laai, op dieselfde bediener geleë moet wees.

Die voorbeelde op W3Schools is almal oop XML-lêers wat op die W3Schools-domein geleë is.

As jy die voorbeeld hierbo op een van jou eie webblaaie wil gebruik, moet die XML-lêers wat jy laai op jou eie bediener geleë wees.



XMLHttpRequest-objekmetodes

Method Description
new XMLHttpRequest() Creates a new XMLHttpRequest object
abort() Cancels the current request
getAllResponseHeaders() Returns header information
getResponseHeader() Returns specific header information
open(method, url, async, user, psw) Specifies the request

method: the request type GET or POST
url: the file location
async: true (asynchronous) or false (synchronous)
user: optional user name
psw: optional password
send() Sends the request to the server
Used for GET requests
send(string) Sends the request to the server.
Used for POST requests
setRequestHeader() Adds a label/value pair to the header to be sent

XMLHttpRequest Object Properties

Property Description
onload Defines a function to be called when the request is recieved (loaded)
onreadystatechange Defines a function to be called when the readyState property changes
readyState Holds the status of the XMLHttpRequest.
0: request not initialized
1: server connection established
2: request received
3: processing request
4: request finished and response is ready
responseText Returns the response data as a string
responseXML Returns the response data as XML data
status Returns the status-number of a request
200: "OK"
403: "Forbidden"
404: "Not Found"
For a complete list go to the Http Messages Reference
statusText Returns the status-text (e.g. "OK" or "Not Found")

Die laai Eiendom

Met die XMLHttpRequestvoorwerp kan jy 'n terugbelfunksie definieer wat uitgevoer moet word wanneer die versoek 'n antwoord ontvang.

Die funksie word gedefinieer in die onloadeienskap van die XMLHttpRequestobjek:

Voorbeeld

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

Veelvuldige terugbelfunksies

As jy meer as een AJAX-taak op 'n webwerf het, moet jy een funksie skep om die XMLHttpRequestobjek uit te voer, en een terugbelfunksie vir elke AJAX-taak.

Die funksie-oproep moet die URL bevat en watter funksie om te roep wanneer die antwoord gereed is.

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) {
  // action goes here
}
function myFunction2(xhttp) {
  // action goes here
}

Die onreadystatechange Eiendom

Die readyStateeiendom hou die status van die XMLHttpRequest.

Die onreadystatechangeeiendom definieer 'n terugbelfunksie wat uitgevoer moet word wanneer die readyState verander.

Die statuseiendom en die statusTexteienskappe hou die status van die XMLHttpRequest-objek.

Property Description
onreadystatechange Defines a function to be called when the readyState property changes
readyState Holds the status of the XMLHttpRequest.
0: request not initialized
1: server connection established
2: request received
3: processing request
4: request finished and response is ready
status 200: "OK"
403: "Forbidden"
404: "Page not found"
For a complete list go to the Http Messages Reference
statusText Returns the status-text (e.g. "OK" or "Not Found")

Die onreadystatechangefunksie word geroep elke keer as die readyState verander.

Wanneer readyState4 is en status 200 is, is die antwoord gereed:

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

Die onreadystatechangegebeurtenis word vier keer geaktiveer (1-4), een keer vir elke verandering in die readyState.