** Fetch API - opciono - za učenike koji žele da znaju malo više
1. Uvod u Fetch API
Kada koristimo web stranice, često nam trebaju podaci sa interneta. Na primer, online prodavnica prikazuje proizvode iz baze podataka, a vremenska prognoza prikazuje najnovije podatke o vremenu. Ovi podaci se ne nalaze direktno u HTML fajlu, već ih preuzimamo sa servera.
Fetch API je ugrađena funkcionalnost u JavaScript-u koja nam omogućava da dohvatamo podatke sa servera na jednostavan način.
2. Dohvatanje podataka sa Fetch API
Fetch API koristi funkciju fetch() koja nam omogućava da pošaljemo zahtev serveru i dobijemo odgovor.
Kako radi:
Fetch API omogućava slanje HTTP zahteva i dobijanje odgovora iz mrežnih resursa. Umesto klasičnih AJAX poziva, Fetch koristi obećanja (Promises), što omogućava asinhornu obradu podataka bez zadržavanja izvršenja koda.
-
Slanje HTTP zahteva
fetch(url)šalje zahtev ka serveru i vraćaPromise(obećanje).- Server odgovara podacima koje treba obraditi.
-
Obrada odgovora
.then(response => response.text())konvertuje odgovor u tekst (u ovom slučaju)..then(data => {...})obrađuje tekstualne podatke i prikazuje ih na stranici.
-
Rukovanje greškama
.catch(error => console.error(error))hvata eventualne greške (npr. ako fajl ne postoji).
Fetch API koristi funkciju fetch() koja nam omogućava da pošaljemo zahtev serveru i dobijemo odgovor.
Sintaksa izgleda ovako:
fetch('URL')
.then(response => response.text()) // Konvertujemo odgovor u tekst
.then(data => console.log(data)) // Prikazujemo podatke u konzoli
.catch(error => console.error('Došlo je do greške:', error));
Objašnjenje koda:
fetch('URL')– Zahtevamo podatke sa određenog URL-a..then(response => response.text())– Konvertujemo odgovor u običan tekst..then(data => console.log(data))– Prikazujemo preuzeti tekst u konzoli..catch(error => console.error('Došlo je do greške:', error))– Hvatamo eventualne greške i prikazujemo ih u konzoli.
PRIMER 1
Dohvatanje podataka iz tekstualnog fajla (TXT) ... (prikaži / sakrij)
Pretpostavimo da imamo fajl poruka.txt sa sledećim sadržajem:
Dobrodošli na naš sajt!
Možemo ga dohvatiti i prikazati na stranici:
fetch('poruka.txt')
.then(response => response.text())
.then(data => {
document.getElementById('rezultat').innerText = data;
})
.catch(error => console.error('Greška:', error));
HTML kod:
<div id="rezultat"></div>
PRIMER 2
Dohvatanje podataka iz JSON fajla ... (prikaži / sakrij)
JSON (JavaScript Object Notation) je format u kojem se često nalaze podaci sa servera. Pretpostavimo da imamo fajl proizvodi.json sa sledećim sadržajem:
[
{ "ime": "Laptop", "cena": 50000 },
{ "ime": "Telefon", "cena": 30000 }
]
Da bismo dohvatili i prikazali ove podatke na stranici:
fetch('proizvodi.json')
.then(response => response.json()) // Pretvaramo JSON u JavaScript objekat
.then(data => {
let rezultatDiv = document.getElementById('rezultat');
rezultatDiv.innerHTML = ""; // Brišemo stari sadržaj
data.forEach(proizvod => {
rezultatDiv.innerHTML += `<p>${proizvod.ime} - ${proizvod.cena} RSD</p>`;
});
})
.catch(error => console.error('Greška:', error));
HTML kod:
<div id="rezultat"></div>
PRIMER 3
Dohvatanje podataka iz tekstualnog fajla (TXT) sa više redova ... (prikaži / sakrij)
fetch('poruka.txt')
.then(response => response.text()) // Konvertujemo odgovor u tekst
.then(data => {
let linije = data.split('\n'); // Razdvajamo redove
let rezultatDiv = document.getElementById('rezultat');
rezultatDiv.innerHTML = "";
linije.forEach(linija => {
rezultatDiv.innerHTML += `<p>${linija}</p>`;
});
})
.catch(error => console.error('Došlo je do greške:', error));
HTML kod:
<div id="rezultat"></div>
Objašnjenje primera:
fetch('poruka.txt')– Ovom funkcijom šaljemo zahtev za učitavanje fajlaporuka.txt..then(response => response.text())– Kada server odgovori, konvertujemo dobijeni odgovor u običan tekst..then(data => {...})– Kada dobijemo tekst, delimo ga na linije pomoćusplit('\n').- Ispisivanje rezultata:
- Pronalazimo
<div id="rezultat">u HTML-u. - Brišemo postojeći sadržaj (
rezultatDiv.innerHTML = ""). - Svaku liniju dodajemo u
<p>element i prikazujemo na stranici.
- Pronalazimo
.catch(error => console.error(...))– Ako dođe do greške, ona se ispisuje u konzoli.
5. Vežbe za učenike
Zadatak 1:
- Napraviti TXT fajl sa nekom porukom.
- Koristiti Fetch API da se taj fajl učita i prikaže na stranici.
Zadatak 2:
- Napraviti JSON fajl sa listom učenika i njihovih ocena.
- Koristiti Fetch API da se ti podaci učitaju i prikažu kao tabela u HTML-u.
Zadatak 3:
- Napraviti dugme u HTML-u.
- Kada korisnik klikne na dugme, treba se učitati i prikazati novi tekst iz TXT ili JSON fajla.