JS-zelfstudie

JS HOME JS Introductie JS Waarheen? JS-uitgang JS-verklaringen JS-syntaxis JS-opmerkingen JS-variabelen JS Let JS Const JS-operators JS Rekenen JS-opdracht JS-gegevenstypen JS-functies JS-objecten JS-evenementen JS-snaren JS String-methoden JS String zoeken JS String-sjablonen JS-nummers JS-nummermethoden JS-arrays JS-array-methoden JS-array sorteren JS-array-iteratie JS Array Const JS-datums JS-datumnotaties JS Datum Ophaalmethoden Methoden voor het instellen van JS-datum JS Math JS Willekeurig JS Booleans JS-vergelijkingen JS-voorwaarden JS-schakelaar JS Loop For JS-lus voor binnen JS Loop For Of JS-lus terwijl JS Break JS-iteraties JS-sets JS-kaarten JS Typeof JS Type conversie JS Bitwise JS RegExp JS-fouten JS-bereik JS Hijsen JS strikte modus JS dit trefwoord JS-pijlfunctie JS-lessen JS JSON JS-foutopsporing JS-stijlgids JS-best practices JS-fouten JS-prestaties JS Gereserveerde Woorden

JS-versies

JS-versies JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS-geschiedenis

JS-objecten

Objectdefinities Objecteigenschappen Objectmethoden Objectweergave Objectaccessoires Objectconstructeurs Objectprototypes Object-Iterables Objectsets Objectkaarten Objectreferentie

JS-functies

Functiedefinities Functieparameters: Functie-aanroep Functie-oproep: Functie Toepassen Functie Sluitingen

JS-lessen

Klas Intro Klasse Overerving Klasse Statisch

JS Asynchrone

JS-callbacks JS asynchroon JS belooft JS Async/Wachten

JS HTML DOM

DOM Intro DOM-methoden DOM-document DOM-elementen DOM HTML DOM-formulieren DOM-CSS DOM-animaties DOM-evenementen DOM-gebeurtenisluisteraar DOM-navigatie DOM-knooppunten DOM-collecties DOM-knooppuntlijsten

JS-browserstuklijst

JS-venster JS-scherm JS-locatie JS-geschiedenis JS-navigator JS pop-upwaarschuwing JS-timing JS-koekjes

JS Web API's

Introductie web-API Web Forms API Webgeschiedenis-API Webopslag-API Web Worker-API Web Fetch-API Webgeolocatie-API

JS AJAX

Ajax-intro AJAX XMLHttp Ajax-verzoek Ajax-reactie AJAX XML-bestand AJAX PHP Ajax ASP AJAX-database AJAX-toepassingen Ajax-voorbeelden

JS JSON

JSON-intro JSON-syntaxis JSON versus XML JSON-gegevenstypen JSON ontleden JSON Stringify JSON-objecten JSON-arrays JSON-server JSON PHP JSON HTML JSON JSONP

JS versus jQuery

jQuery-kiezers jQuery HTML jQuery CSS jQuery DOM

JS-graphics

JS-graphics JS Canvas JS Plotly JS Chart.js JS Google-kaart JS D3.js

JS-voorbeelden

JS-voorbeelden JS HTML DOM JS HTML-invoer JS HTML-objecten JS HTML-evenementen JS-browser JS-editor JS-oefeningen JS-quiz JS-certificaat

JS-referenties

JavaScript-objecten HTML DOM-objecten


AJAX - XMLHttpRequest


Het object XMLHttpRequest wordt gebruikt om gegevens op te vragen bij een server.


Stuur een verzoek naar een server

Om een ​​verzoek naar een server te sturen, gebruiken we de methoden open() en send() van het XMLHttpRequestobject:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Method Description
open(method, url, async) Specifies the type of request

method: the type of request: GET or POST
url: the server (file) location
async: true (asynchronous) or false (synchronous)
send() Sends the request to the server (used for GET)
send(string) Sends the request to the server (used for POST)

De url - Een bestand op een server

De url-parameter van de open()methode is een adres naar een bestand op een server:

xhttp.open("GET", "ajax_test.asp", true);

Het bestand kan elk soort bestand zijn, zoals .txt en .xml, of serverscriptbestanden zoals .asp en .php (die acties op de server kunnen uitvoeren voordat het antwoord wordt teruggestuurd).


Asynchroon - waar of niet waar?

Serververzoeken moeten asynchroon worden verzonden.

De parameter async van de methode open() moet worden ingesteld op true:

xhttp.open("GET", "ajax_test.asp", true);

Door asynchroon te verzenden, hoeft het JavaScript niet te wachten op de serverreactie, maar kan het in plaats daarvan:

  • andere scripts uitvoeren terwijl u wacht op serverreactie
  • omgaan met het antwoord nadat het antwoord klaar is

De standaardwaarde voor de parameter async is async = true.

U kunt de derde parameter veilig uit uw code verwijderen.

Synchronous XMLHttpRequest (async = false) wordt niet aanbevolen omdat het JavaScript niet meer wordt uitgevoerd totdat het serverantwoord gereed is. Als de server bezet of traag is, zal de toepassing vastlopen of stoppen.


GET of POST?

GETis eenvoudiger en sneller dan POST, en kan in de meeste gevallen worden gebruikt.

Gebruik echter altijd POST-verzoeken wanneer:

  • Een cachebestand is geen optie (update een bestand of database op de server).
  • Een grote hoeveelheid gegevens naar de server verzenden (POST heeft geen beperkingen voor de grootte).
  • Door gebruikersinvoer te verzenden (die onbekende tekens kan bevatten), is POST robuuster en veiliger dan GET.

KRIJG verzoeken

Een eenvoudig GETverzoek:

Voorbeeld

xhttp.open("GET", "demo_get.asp");
xhttp.send();

In het bovenstaande voorbeeld krijgt u mogelijk een resultaat in de cache. Om dit te voorkomen, voegt u een unieke ID toe aan de URL:

Voorbeeld

xhttp.open("GET", "demo_get.asp?t=" + Math.random());
xhttp.send();

Als u informatie met de methode wilt verzenden GET, voegt u de informatie toe aan de URL:

Voorbeeld

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford");
xhttp.send();

Hoe de server de invoer gebruikt en hoe de server reageert op een verzoek, wordt in een later hoofdstuk uitgelegd.



POST-verzoeken

Een eenvoudig POSTverzoek:

Voorbeeld

xhttp.open("POST", "demo_post.asp");
xhttp.send();

Om gegevens als een HTML-formulier te POST, voegt u een HTTP-header toe met setRequestHeader(). Specificeer de gegevens die u wilt verzenden in de send()methode:

Voorbeeld

xhttp.open("POST", "ajax_test.asp");
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Method Description
setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name
value: specifies the header value

synchrone aanvraag

Om een ​​synchroon verzoek uit te voeren, wijzigt u de derde parameter in de open()methode in false:

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

Soms worden async = false gebruikt voor snel testen. U vindt ook synchrone verzoeken in oudere JavaScript-code.

Aangezien de code wacht tot de server is voltooid, is er geen onreadystatechange functie nodig:

Voorbeeld

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;

Synchronous XMLHttpRequest (async = false) wordt niet aanbevolen omdat het JavaScript niet meer wordt uitgevoerd totdat het serverantwoord gereed is. Als de server bezet of traag is, zal de toepassing vastlopen of stoppen.

Moderne ontwikkelaarstools worden aangemoedigd om te waarschuwen voor het gebruik van synchrone verzoeken en kunnen een InvalidAccessError-uitzondering genereren wanneer deze zich voordoet.