⊗jsSpAXFt 244 of 294 menu

Fetchi töötamise põhitõed AJAX-is

Vaatame nüüd, kuidas saab lehe osa AJAXi abil laadida. Oletame, et meie lehel index.html on div ja nupp (siin on näidatud body sisu):

<div></div> <button>click me</button>

Oletame, et meil on ka leht ajax.html, millel on kolm lõiku (ilma lehe siltideta, lihtsalt lõigud):

<p>1</p> <p>2</p> <p>3</p>

Teeme nii, et nupu vajutamisel lehel index.html laaditakse div-i lehe ajax.html sisu.

Selleks saame kõigepealt oma elementidele viited muutujatesse:

let div = document.querySelector('div'); let button = document.querySelector('button');

Lisame nupule klikirakenduri:

button.addEventListener('click', function() { // siin teostame AJAX päringu });

Teostame nüüd AJAX päringu. Selleks kasutatakse funktsiooni fetch, mis parameetrina saab aadressi lehele, mille sisu me soovime saada. Määrame oma serveril asuva lehe ajax.html aadressi:

button.addEventListener('click', function() { let result = fetch('/ajax.html'); });

fetch tagastab tulemusena promisi. Asi on selles, et lehe pärimine AJAXi kaudu on asünkroonne tehe, sest möödub mõni aeg, mille jooksul leht meile vastab.

Saame promisi tulemuse:

button.addEventListener('click', function() { let promise = fetch('/ajax.html'); promise.then(function(response) { // serveri vastus on muutujas response }); });

Lihtsustame, vabanedes lisamuutujast:

button.addEventListener('click', function() { fetch('/ajax.html').then(function(response) { }); });

Lihtsustame, kasutades noolfunktsiooni:

button.addEventListener('click', function() { fetch('/ajax.html').then(response => { }); });

Esitame loetavamal kujul:

button.addEventListener('click', function() { fetch('/ajax.html').then( response => { } ); });

Muutujas response on piisavalt keeruline Response klassi objekt:

button.addEventListener('click', function() { fetch('/ajax.html').then(response => { console.log(response); // Response klassi objekt }); });

Me uurime seda objekti sügavuti järgmistes õppetundides, kuid praegu vajame kõige lihtsamat - saada päritud lehe tekst. Selleks on selles objektis olemas meetod text. See meetod aga ei tagasta lehe teksti, vaid promisi selle tekstiga:

button.addEventListener('click', function() { fetch('/ajax.html').then( response => { console.log(response.text()); // väljastab Promise } ); });

Lehe teksti saamiseks on vaja promisi, mis saadi response.text-ist, töödelda uuesti:

button.addEventListener('click', function() { fetch('/ajax.html').then( response => { return response.text(); } ).then( text => { console.log(text); // lehe tekst } ); });

Niisiis, saime lõpuks päritud lehe teksti ja võime selle näiteks oma div-i kirjutada:

button.addEventListener('click', function() { fetch('/ajax.html').then( response => { return response.text(); } ).then( text => { div.innerHTML = text; } ); });

Antud on kolm nuppu ja div. Serveris on antud kolm lehte. Tehke nii, et iga nupp laadiks div-i vastava lehe.

Oletame, et serveris on viis lehte. Oletame, et esimene nupu vajutus laadib esimese lehe, teine vajutus - teise, ja nii edasi, kuni lehed otsa saavad.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu