• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Fetch API - przechwycenie danych z json i zapis do zmiennej.

+1 głos
1,421 wizyt
pytanie zadane 31 marca 2021 w JavaScript przez rszczepanski02 Obywatel (1,180 p.)

Cześć. Chciałbym pobrać dane z json i na podstawie listy tworzyć nowe obiekty. Problem w tym, że pobranej listy za pomocą fetch api nie mogę przesłać do zmiennej. Za każdym razem zmienna jest pusta. Mógłby ktoś proszę pomóc?

 

var dataList = [];
fetch("http://127.0.0.1:5500/src/data.json")
    .then(res => res.json())
    .then(res => {
        return dataList = res;
}); 

console.log(dataList);

 

komentarz 31 marca 2021 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
co jest w res?
komentarz 31 marca 2021 przez rszczepanski02 Obywatel (1,180 p.)
Pobrana tablica elementów json
komentarz 31 marca 2021 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
ale dokładniej - możesz wstawić tam console.log?
komentarz 31 marca 2021 przez rszczepanski02 Obywatel (1,180 p.)
Mógłbym i wtedy będzie działać, jednak ja nie będę chciał drukować w konsoli tych objektów a na ich podstawie tworzyć nowe w js i pobierać do html'a.

2 odpowiedzi

+5 głosów
odpowiedź 31 marca 2021 przez Comandeer Guru (607,250 p.)

Nie da się tego zrobić, bo Fetch jest asynchroniczne. Jeśli chcesz obrabiać dane, musisz to zrobić wewnątrz then albo użyć składni async/await.

0 głosów
odpowiedź 31 marca 2021 przez lukasz21 Obywatel (1,090 p.)

W 'res' masz tablice zawierajaca obiekty. Jeśli chcesz pobrać dane to musisz podać indeks w tej tablicy by zaznaczyć obiekt. Potem w tym obiekcie musisz podać klucz by zaznaczyć wartość klucza.

Przykładowo dla tego przykładu [API]:

https://jsonplaceholder.typicode.com/users

W tablicy dla indeksu 0 jest obiekt który ma w sobie obiekty. Pierwszy obiekt ma klucz i wartość "{username : "Bret" }". By je zaznaczyc musisz podac:  res[0].username .

 

Kod wtedy by tak wygladał:

fetch("https://jsonplaceholder.typicode.com/users")
      .then(res => res.json())
      .then(res => {
        console.log(res[0].username);  // zwraca "Bret"
      })


Zobacz też te źródła:

  • Opis tematu Fetch

https://kursjs.pl/kurs/ajax/fetch.php#pobieranie-danych

  • Przykładowe API które możesz wykorzystać do ćwiczeń.

https://jsonplaceholder.typicode.com/

https://randomuser.me/

komentarz 31 marca 2021 przez rszczepanski02 Obywatel (1,180 p.)
Tak to rozumiem, tylko zastanawiam się czy mogę ten res wyciągnąć na zewnątrz zapisując go w zmiennej, którą później wykorzystam przy tworzeniu objektów.

Podobne pytania

0 głosów
2 odpowiedzi 691 wizyt
pytanie zadane 8 maja 2018 w JavaScript przez Xenoxer Użytkownik (560 p.)
0 głosów
1 odpowiedź 929 wizyt
pytanie zadane 2 stycznia 2019 w JavaScript przez kordix Gaduła (3,910 p.)

93,600 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,085 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...