IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Faire apparaitre ses Card depuis une API


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 9
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2023
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Faire apparaitre ses Card depuis une API
    Bonjour,

    Je suis en formation dev web et nous avons comme TD d'utiliser une api.
    Je dois réussir a afficher 6 cards en aléatoire avec le lien prévu pour ca : www.themealdb.com/api/json/v1/1/random.php

    J'arrive a récupérer les 6 objets dans la console, mais je n'arrive pas a afficher les 6 Cards sur la page HTML.

    Auriez-vous l'amabilité de m'aider pour enfin afficher ces 6 cards ! un grand MERCI si vous trouvez la solution !!!!!

    page html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="../assets/css/style.css">
     
     
        <title>Accueil recette</title>
    </head>
    <body>
     
     
      <section class="rechercher">
        <div class="container">
     
            <form>
                <input type="text" placeholder="Chercher une recette" autofocus>
                <button type="submit" class = "bouton recherche" id = "search">
                  <i class = "fas fa-search"></i></button>
                <span class="msg"></span>
            </form>
        </div>
    </section>
     
     
     
        <!-- <img src="../assets/img/header-modified.jpg" class="rounded mx-auto d-block" alt="fond">
     
     
        <div id ="header" class="container-fluid">
     
     
        </div>
     
        <div class="d-flex align-items-center">
     
                <img src="../assets/img/Mmm_ail_a_l'exquise_logo.png" class="rounded mx-auto d-block" alt="fond">
     
            </div>
          </div>
          -->
          <!-- <p class="text-center">Toutes nos recettes.</p>
         <div  class="input-group rounded ">
                <input type="search" class="form-control rounded mt-4" placeholder="Search" aria-label="Search" aria-describedby="search-addon" />
                <span class="input-group-text border-0 mt-4" id="search-addon">
                  <i class="fas fa-search"></i>
                </span>
              </div>
        </br>
    </br> -->
     
    <!-- 
    <div class="container text-center">
        <div class="row align-items-start"> -->
     
     
                <div class="col-sm-4">
                  <div class="recette"> 
     
                  <!-- 
                   <img class= "recetteImage" src="../assets/img/i16421-gratin-de-boeuf-et-gnocchi.webp" class="rounded" alt="gratin de boeuf">
     
     
                            <h5 class="recetteTitre">Gratin de bœuf et gnocchi</h5>
                            <p class="recetteInstruction">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                            <a href="#" id="card1" class="btn btn-primary">Go somewhere</a>
                        </div>
                </div>
    </div> -->
     
     
    <!-- 
    <div class="container text-center">
      <div class="row align-items-start">
     
     
              <div class="col-sm-4">
                <div class="recette">
                  <img class= "recetteImage" src="../assets/img/i16421-gratin-de-boeuf-et-gnocchi.webp" class="rounded" alt="gratin de boeuf">
     
     
                          <h5 class="recetteTitre">Gratin de bœuf et gnocchi</h5>
                          <p class="recetteInstruction">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                          <a href="#" id="card1" class="btn btn-primary">Go somewhere</a>
                      </div>
              </div>
    </div> -->
     
     
    <!-- 
     
    <div class="container text-center">
      <div class="row align-items-start">
     
     
              <div class="col-sm-4"> -->
                <!-- <div class="recette">
                  <img class= "recetteImage" src="../assets/img/i16421-gratin-de-boeuf-et-gnocchi.webp" class="rounded" alt="gratin de boeuf">
     
     
                          <h5 class="recetteTitre">Gratin de bœuf et gnocchi</h5>
                          <p class="recetteInstruction">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                          <a href="#" id="card1" class="btn btn-primary">Go somewhere</a>
                      </div> -->
              <!-- </div>
    </div>  -->
     
     
      <script src="bundle.js"></script>
     
    </body>
    </html>




    Le fichier INdex.js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    import { RecetteCard } from "./components/RecetteCard.js";
     
    const apiKey = "1";
     
    // Le début de l'URL pour utiliser Open Weather Map
     
    const urlStart = "https://www.themealdb.com/api/json/v1/1/search.php?s=";
    // Les paramètres à appeler en plus pour avoir les catégorie et les régions
    //const paramsUrl = "&s";
     
    const form = document.querySelector(".rechercher form");
    const input = document.querySelector(".rechercher input");
    const list = document.querySelector(".recette");
    //const rechercheCategorie = document.querySelector(".recetteCategorie");
    form.addEventListener("submit", onFormSubmitted);
     
    function onFormSubmitted(event) {
      // ne recharge pas la page (qui est le comportement par défaut)
      event.preventDefault(apiKey);
     
      // on récupère la valeur de la ville cherchée
      let inputValue = input.value;
     
      // Requête AJAX avec le nom de la ville
      const url = `${urlStart}${inputValue}`;
      console.log("URL", url);
     
      // <a href="https://www.digitalocean.com/community/tutorials/how-to-use-the-javascript-fetch-api-to-get-data-fr" target="_blank">https://www.digitalocean.com/communi...to-get-data-fr</a>
     
      fetch(url)
        .then((response) => response.json())
        .then(function (data) {
          console.log(data);
        });
    }
     
    // recette.addEventListener("submit", recettealeatoire);
     
    // function recettealeatoire(event) {
    //   const recette = document.querySelector(".recette");
    //   event.preventDefault();
    //   let inputvalue = input.value;
     
    // const urlRandoms = "www.themealdb.com/api/json/v1/1/randomselection.php";
     
    // const urlRandoms = `${urlRandoms}`;
     
    console.log("recettes aléatoires");
     
    for (let compteur = 0; compteur <= 5; compteur++) {
      fetch(`https://www.themealdb.com/api/json/v1/1/random.php`)
        .then((response) => response.json())
        .then(function (data) {
          //  let Recette = new RecetteCard();
          console.log(data);
     
          const { meals, strMeal, strMealThumb, strInstructions } = data;
     
          let Recette = new RecetteCard(
            meals,
            strMeal,
            strMealThumb,
            strInstructions
          );
     
          list.appendChild(Recette.content);
        });
     
      // .catch((data) => {
      //   console.error(data.message); // "oh, no!"
      // })
      //   console.error(
      //     "Il y a eu un problème avec l'opération fetch : " + error.message
      //   );
      // });
    }
    /



    le fichier recettecard en javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    export class RecetteCard {
      _titre;
      _photo;
      _instruction;
     
      constructor(titre, photo, instruction) {
        this._titre = titre;
        this._photo = photo;
        this._instruction = instruction;
     
        console.log(
          "New recettecarte",
          this._titre,
          this._photo,
          this._instruction
        );
      }
     
      get content() {
        const recette = document.createElement("recette");
        recette.classList.add("recette");
     
        const markup = `
     
          <img class= "recetteImage" data-name="${this._photo}" alt="gratin de boeuf">
     
         <h5 class="recetteTitre" data-name="${this._titre}">
     
        <p class="recetteInstruction"data-name="${this._instruction}"</p>
     
     
         <a href="#" id="card1" class="btn btn-primary">Go somewhere</a>
                        `;
     
        recette.innerHTML = markup;
        return recette;
      }
    }


    le fichier index.js


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    import { RecetteCard } from "./components/RecetteCard.js";
     
    const apiKey = "1";
     
    // Le début de l'URL pour utiliser Open Weather Map
     
    const urlStart = "https://www.themealdb.com/api/json/v1/1/search.php?s=";
    // Les paramètres à appeler en plus pour avoir les catégorie et les régions
    //const paramsUrl = "&s";
     
    const form = document.querySelector(".rechercher form");
    const input = document.querySelector(".rechercher input");
    const list = document.querySelector(".recette");
    //const rechercheCategorie = document.querySelector(".recetteCategorie");
    form.addEventListener("submit", onFormSubmitted);
     
    function onFormSubmitted(event) {
      // ne recharge pas la page (qui est le comportement par défaut)
      event.preventDefault(apiKey);
     
      // on récupère la valeur de la ville cherchée
      let inputValue = input.value;
     
      // Requête AJAX avec le nom de la ville
      const url = `${urlStart}${inputValue}`;
      console.log("URL", url);
     
      // <a href="https://www.digitalocean.com/community/tutorials/how-to-use-the-javascript-fetch-api-to-get-data-fr" target="_blank">https://www.digitalocean.com/communi...to-get-data-fr</a>
     
      fetch(url)
        .then((response) => response.json())
        .then(function (data) {
          console.log(data);
        });
    }
     
    // recette.addEventListener("submit", recettealeatoire);
     
    // function recettealeatoire(event) {
    //   const recette = document.querySelector(".recette");
    //   event.preventDefault();
    //   let inputvalue = input.value;
     
    // const urlRandoms = "www.themealdb.com/api/json/v1/1/randomselection.php";
     
    // const urlRandoms = `${urlRandoms}`;
     
    console.log("recettes aléatoires");
     
    for (let compteur = 0; compteur <= 5; compteur++) {
      fetch(`https://www.themealdb.com/api/json/v1/1/random.php`)
        .then((response) => response.json())
        .then(function (data) {
          //  let Recette = new RecetteCard();
          console.log(data);
     
          const { meals, strMeal, strMealThumb, strInstructions } = data;
     
          let Recette = new RecetteCard(
            meals,
            strMeal,
            strMealThumb,
            strInstructions
          );
     
          list.appendChild(Recette.content);
        });
     
      // .catch((data) => {
      //   console.error(data.message); // "oh, no!"
      // })
      //   console.error(
      //     "Il y a eu un problème avec l'opération fetch : " + error.message
      //   );
      // });
    }
    /

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 351
    Points : 15 697
    Points
    15 697
    Par défaut
    qu'avez vous comme erreur dans la console javascript avec ce code ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/05/2007, 15h00
  2. Comment faire apparaitre des données dans une listbox
    Par nuans dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 14/05/2007, 15h04
  3. Faire apparaitre un DIV dans une zone différente
    Par ThomasH dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 23/10/2006, 14h45
  4. Réponses: 13
    Dernier message: 12/09/2006, 17h43
  5. [CSS] Comment faire apparaitre l'ascenceur dans une <div&
    Par vampyrx dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 08/09/2005, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo