Harjutus 6: Asünkroonne või sünkroone?

  1. Ava veebilehitsejas Code Sandbox sait ja vali Static või HTML 5 Template
  2. Vali Official Templates alt static
  3. Kirjuta pildil olev kood index.html faili. Alustuseks kasuta HTML trafaretti (hüüumärk ja tab klahv).

Vali Official Templates alt static:

Lõplik kood ja pildid, mida see peaks väljastama.

Ülesande algkood:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Multiple Free APIs</title>
    <link rel="stylesheet" href="styles.css" />
  </head>
  <body>
    <button type="button" onclick="loadBacon()">Request Bacon</button>
    <button type="button" onclick="loadBreakfastRecipes()">
      Request Breakfast Recipes
    </button>

    <div id="demo"></div>

    <script>
      function loadBacon() {
        const xhttp = new XMLHttpRequest();
        xhttp.onload = function () {
          document.getElementById("demo").innerHTML = this.responseText;
        };
        xhttp.open("GET", "https://baconipsum.com/api/?type=all-meat");
        xhttp.send();
      }

      async function loadBreakfastRecipes() {
        const demo = document.getElementById("demo");
        demo.innerHTML = "Loading recipes...";

        try {
          const response = await fetch(
            "https://www.themealdb.com/api/json/v1/1/filter.php?c=Breakfast"
          );
          if (!response.ok) {
            demo.innerHTML = "Error fetching recipes.";
            return;
          }
          const data = await response.json();
          if (!data.meals || data.meals.length === 0) {
            demo.innerHTML = "No breakfast recipes found.";
            return;
          }
          demo.innerHTML = data.meals
            .map(
              (meal) =>
                `<h3>${meal.strMeal}</h3>
          <img src="${meal.strMealThumb}" alt="${meal.strMeal}" style="max-width:200px;border-radius:8px;margin-bottom:10px;" />`
            )
            .join("<hr />");
        } catch (error) {
          demo.innerHTML = "Failed to load recipes.";
        }
      }
    </script>
  </body>
</html>

Minu lisatud kood:

        xhttp.onerror = function () {
          document.getElementById("demo").innerHTML = "❌ Error loading data!";
        };

Kokku võtte:

XHTTP.OPEN(“GET”, URL) – AVAB UUS HTTP PÄRING
XTTP.SEND() – SAADAB PÄRINGU SERVERISSE
XMLHTTPREQUEST – AJAX PÄRING, MIS SAADAB API AADRESSILE SAADAB API aadressile päringu.