IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 12. diel - Ajaxu v JavaScripte - Prehliadač pokemonov

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar

Člen
Avatar
:12.3.2020 13:27

Keď už sa ukazuje práca s AJAX starším, legacy spôsobom, vyhol by som sa používaniu arrow funkcií. A hlavne by som sa pri práci s cudzím API vyhol používaniu innerHTML atribútu. Získané texty treba treba použiť výlučne cez textContent atribút. To by malo byť aj vyslovene spomenuté ako základný bezpečnostný princíp.

 
Odpovedať
12.3.2020 13:27
Avatar
Miloš Pabel
Člen
Avatar
Miloš Pabel:17.3.2020 17:42

V HTML je chyba , píšeš místo atributu id v div elementu class a v JS pak voláš metodu getElementById kde dostaneš null.

 
Odpovedať
17.3.2020 17:42
Avatar
Samuel Hél
Tvůrce
Avatar
Odpovedá na Miloš Pabel
Samuel Hél:27.4.2020 16:01

Díky, hned to opravím :)

Odpovedať
27.4.2020 16:01
?
Avatar
Jaroslav Drobek:22.6.2022 18:25

Hodnocení:

  • "Podívejme se,...jaká data..."
 
Odpovedať
22.6.2022 18:25
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:3.8.2022 10:00

Jen bych se chtěl zeptat na ten limit. Jak se na něj přišlo?
Je to nějaký defaultní parametr u rest API?
Pokud ano, tak je víc takovýchto obecných parametrů?
Pokud ne, tak jak můžu já zjistit u cizího API, co v něm můžu takto použít?

Odpovedať
3.8.2022 10:00
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Blanka Svobodová:8.8.2022 23:28

proč tady není ke stažení složka s ukázkou funkční stránky a js? Potřebovala bych si najít chybu, nefunguje mi to. :-(, což mě štve, .... konečně něco, co doma vzbudilo nadšení....

Odpovedať
8.8.2022 23:28
Kdy, když né teď. Kdo, když né já?
Avatar
Štěpán Pollak:27.9.2022 8:20

Bohužel mi program nefunguje a není možnost si ho zkontrolovat.

 
Odpovedať
27.9.2022 8:20
Avatar
Kamil Pajta
Člen
Avatar
Kamil Pajta:6.10.2022 16:21

Nefunguje , ani tu nie je odkaz na stiahnutie. Takže zatiaľ nepoužiteľné.

 
Odpovedať
6.10.2022 16:21
Avatar
Tomáš Skyba:7.10.2022 8:04

No jo, zas je to rozbitý...

 
Odpovedať
7.10.2022 8:04
Avatar
Jan Poláček
Tvůrce
Avatar
Odpovedá na Kamil Pajta
Jan Poláček:7.10.2022 11:21

Ahoj,

za mě tedy funkční, dobré je mít nejdříve část html kódu a poté JavaScript, představme si to, že to jede řádek po řádku, takže např.

let seznam_div = document.getElementById("poke-seznam");

přiřazuje element, ale ten už by měl existovat, jinak je to null (prázdno), dobré je také začít používat vývojářské nástroje v prohlížeči, konzole je skvělá věc, viz obrázek, pokud mám první javascript a poté HTML.

a na závěr tedy přikládám celý zdroják, co funguje

<div class="poke-container">
    <div id="poke-seznam"></div>
    <div id="poke-detaily"></div>
</div>
<script>
function stahniJSON(url, callback)
{
    let xhr = new XMLHttpRequest();
    xhr.onload = () => {
        callback(JSON.parse(xhr.response));
    }
    xhr.open("GET", url);
    xhr.send();
}
function nactiSeznam(url)
{
    let seznam_div = document.getElementById("poke-seznam");
    seznam_div.innerHTML = "<ul id='poke-seznam-ul'></ul>";
    let seznam_ul = document.getElementById("poke-seznam-ul");

    stahniJSON(url, (data) => {
        for (let pokemon of data.results)
        {
            let novaPolozka = document.createElement("li");
            novaPolozka.innerText = pokemon.name;
            seznam_ul.appendChild(novaPolozka);
            let poke_url = pokemon.url;
            novaPolozka.addEventListener("click", () => nactiPokemona(poke_url));
        }
    });
}
function nactiPokemona(url)
{
    let detaily_div = document.getElementById("poke-detaily");
    stahniJSON(url, (data) => {
        let html = `
            <img src="${data.sprites.back_default}" />
            <ul>
                <li>Název: ${data.name}</li>
                <li>Výška: ${data.height}</li>
                <li>Váha: ${data.weight}</li>
            </ul>
        `;

        detaily_div.innerHTML = html;
    });
}
nactiSeznam("https://pokeapi.co/api/v2/pokemon");
</script>
Odpovedať
7.10.2022 11:21
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!