Hi everyone! I'm the author of code.mu :)
I'd love to chat with my non-Russian audience. I'm looking for your feedback on the site and the translation quality. Let's chat:)
⊗jsSpAXFt 244 of 294 menu
◀ ▶

Pagrindai dirbant su fetch AJAX

Dabar pažiūrėkime, kaip iš dalies įkelti puslapį naudojant AJAX. Tarkime, mūsų puslapyje index.html yra išdėstytas div ir mygtukas (čia parodyta body turinys):

<div></div> <button>spausk mane</button>

Tarkime, kad taip pat turime puslapį ajax.html, kuriame yra išdėstytos trys pastraipos (be puslapio tagų, tiesiog pastraipos):

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

Padarykime taip, kad paspaudus mygtuką puslapyje index.html į div būtų įkeltas puslapio ajax.html turinys.

Norint tai padaryti, pirmiausia gaukime į kintamuosius nuorodas į mūsų elementus:

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

Uždėkime ant mygtuko paspaudimo apdorotoją:

button.addEventListener('click', function() { // čia atliksime AJAX užklausą });

Dabar atlikime AJAX užklausą. Tam naudojama funkcija fetch, kuri parametru gauna puslapio adresą, kurio turinį norime gauti. Nurodykime puslapio adresą ajax.html mūsų serveryje:

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

Rezultatu fetch grąžins pažadą. Reikalas tas, kad puslapio užklausa per AJAX - tai asinchroninė operacija, nes praeis šiek tiek laiko, per kurį puslapis mums atsakys.

Gaukime pažado rezultatą:

button.addEventListener('click', function() { let promise = fetch('/ajax.html'); promise.then(function(response) { // serverio atsakas yra kintamajame response }); });

Supaprastinkime, atsikratydami perteklinių kintamųjų:

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

Supaprastinkime, pasinaudoję rodykline funkcija:

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

Pateikime skaitomesne forma:

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

Kintamajame response yra pakankamai sudėtingas Response klasės objektas:

button.addEventListener('click', function() { fetch('/ajax.html').then(response => { console.log(response); // Response klasės objektas }); });

Šį objektą išsamiai tyrinėsime kituose pamokose, o kol kas mums reikia paprasčiausio - gauti užklausto puslapio tekstą. Tam šiame objekte egzistuoja metodas text. Šis metodas, tačiau, grąžina ne puslapio tekstą, o pažadą su jos tekstu:

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

Norint pasiekti puslapio tekstą, būtina pažadą, gautą iš response.text, apdoroti dar kartą:

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

Taigi, mes pagaliau gavome užklausto puslapio tekstą ir galime, pavyzdžiui, įrašyti jį į mūsų div:

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

Duoti trys mygtukai ir div. Serveryje duoti trys puslapiai. Padarykite taip, kad kiekvienas mygtukas į div įkeltų atitinkamą puslapį.

Tarkime, serveryje yra penki puslapiai. Tegul pirmas paspaudimas ant mygtuko įkelia pirmą puslapį, antras paspaudimas - antrą, ir taip tol, kol puslapiai nesibaigs.

← →
↑
Lietuvių▼
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti