AJAX-i tööpõhimõte detailselt:

  1. Sündmus (Event): Kasutaja teeb midagi lehel (klõpsab nuppu, sisestab teksti jne), mis käivitab JavaScripti funktsiooni.
  2. XMLHttpRequest objekt (XHR): See JavaScripti funktsioon loob XMLHttpRequest objekti ja saadab selle kaudu päringu serverile. Kuigi nimes on “XML”, võib see töödelda igat tüüpi andmeid (tänapäeval eelkõige JSON-it).
  3. Serveri töötlus: Server saab päringu, töötleb seda (nt. loeb andmebaasist andmeid) ja saadab vastuse tagasi brauserile.
  4. Vastuse töötlus: Brauser (JavaScript) tuvastab, et serverilt on vastus saabunud. Seejärel parsib vastuse (nt. JSONi JavaScripti objektiks) ja uuendab DOM-i (Document Object Model), st. muudab lehe olemasolevat HTML-i, ilma seda uuesti laadimata.

H.6: API päring

Bacon API on naljakas ja kergekasutusega API, mis pakub erinevaid “bacon”-teemalisi andmeid ja pilte.

  1. Avage CodeSandbox → valige mall Static (et lihtsalt hostida index.html).
  1. Vali Official Templates alt static
  2. Kirjuta pildil olev kood index.html faili. Alustuseks kasuta HTML trafaretti (hüüumärk ja tab klahv).
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Static Template</title>
    <link rel="stylesheet" href="styles.css" />
  </head>
  <body>
    <button type="button" onclick="loadDoc()">Request bacon</button>
    <p id="demo"></p>

    <script>
      function loadDoc() {
        const xhttp = new XMLHttpRequest();
        xhttp.onload = function () {
          document.getElementById("demo").innerHTML = this.responseText;
        };
        xhttp.open("GET", "https://baconipsum.com/api/?type=all-meat");
        xhttp.send();
      }
    </script>
  </body>
</html>

4. Salvesta (Ctrl+S) — CodeSandboxis salvestatakse tavaliselt automaatselt, kuid seda saab teha ka käsitsi.

5. Vajuta lehel nuppu — näed API vastust (tekst/JSON „bacon” kohta).

Kokkuvõte:

xhttp.open(“GET”, “url”) – avab uus HTTP päring

xhhtp.send() – saadab päringu serverisse

XMLHTTPrequest – AJAX päring mis saadab API aadressile päringu