11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je test un code api, sauf que rien ne fonctionne comme il le faut... Smiley ohwell

rien ne s'affiche, je fais un console log pour vérifier si le fetch fonctionne...même ça je n'y arrive pas Smiley decu
je vous mets mes codes :
!DOCTYPE html>
<html lang="fr">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="fruits.css">
    <script src="fruits.js" defer></script>
    <title>Fruits rouges</title>
</head>
 
<body>
    <h1>Les fruits rouges :</h1>
    <main>
        <section class="liste">
            <ul>
                <ul>
                    <li><a href="">Cerise</a></li>
                    <li><a href="">Fraise</a></li>
                    <li><a href="">Framboise</a></li>
                    <li> <a href="">Mûre</a></li>
                </ul>
            </ul>
        </section>
 
        <section class="contenu">
 
        </section>
    </main>
 
</body>
 
</html>


[
    {
        "titre": "Cerise",
        "description": "La cerise est le fruit comestible du cerisier, il s'agit d'un fruit charnu à noyau de forme sphérique, généralement de couleur rouge."
         
    },
 
    {
        "titre": "Fraise",
        "description": "La fraise est un petit fruit rouge issu des fraisiers, espèces de plantes herbacées appartenant au genre Fragaria"
    },
 
    {
        "titre": "Framboise",
        "description": "La framboise est un fruit rouge issu du framboisier, un arbrisseau de la famille des rosacées.."
         
    },
 
    {
        "titre": "Mûre",
        "description": "La mûre est un fruit comestible de la ronce commune, buisson épineux très envahissant du genre Rubus, de la famille des Rosacées, comme le framboisier"
    }
]


/ // Récupération des fruits depuis le fichier JSON
const fruits = await fetch("fruits.json").then(fruits => fruits.json());
    console.log(fruits);
    const affichage = fruits[0];
    console.log(affichage);
 
 
// Fonction qui génère toute la page web
function genererFruits(fruits) {
    for (let i = 0; i < fruits.length; i++) {
        // On créer une balise h2 pour le titre
        const titreElement = document.createElement("h2");
        titreElement.innerText = affichage.titre;
 
        // On créer une balise article pour la description
        const articleElement = document.createElement("article");
        articleElement.innerText = affichage.description;
 
        // on selectionne la balise dans le code html
        const contenu = document.querySelector(".contenu");
 
        // On rattache les éléments au fichier html
        contenu.appendChild(titreElement);
        contenu.appendChild(articleElement);
    }


merci.
Bonsoir,

Après une très rapide lecture de 30 secondes, IL y a plusieurs choses qui me chaffouinent dans ton code:

const fruits = await fetch("fruits.json").then(fruits => fruits.json());


J'éviterais de mélanger le code async/await et le code style promise. C'est source de confusion. Choisis soit l'un, soit l'autre, mais pas les deux en même temps.

A noter que pour que await fonctionne, il faut que ta fonction soit déclarée async. Sinon, c'est une erreur de syntaxe.

a écrit :
articleElement.innerText = affichage.description;


Si ta description contient du code HTML, c'est innerHTML qu'il faut utiliser.
QuentinC a écrit :


const fruits = await fetch("fruits.json").then(fruits =&gt; fruits.json());


J'éviterais de mélanger le code async/await et le code style promise. C'est source de confusion. Choisis soit l'un, soit l'autre, mais pas les deux en même temps.

A noter que pour que await fonctionne, il faut que ta fonction soit déclarée async. Sinon, c'est une erreur de syntaxe.


Le souci c'est que je viens de débuter en API et que je n'ai rien trouvé comme tuto explicatif pour m'apprendre.
et sinon le code JS en lui-même hormis le "innerText" qu'il va falloir que je remplace ?
et comment je le lie (lier) au "href du fichier html pour qu'il puisse s'afficher ?
Merci.
Salut

Ton fichier s'appelle bien fruits.json ? et est-il au même niveau (dossier) que ton fichier javascript ?

Y'a t-il une erreur dans ta console ?

c'est ton
const fruits = await fetch("fruits.json").then(fruits => fruits.json());
    console.log(fruits);
    const affichage = fruits[0];
    console.log(affichage);

que tu essayes de tester et les consoles logs qui n'affiche rien ?
Modifié par JENCAL (23 Jul 2024 - 17:26)
Bonjour à vous et merci pour votre contribution, je n'ai pas pu répondre avant, j'étais parti en vacance, je vais pouvoir me replonger sur le sujet et étudier tout ceci.

JENCAL, oui le fruits.json est au même niveau que fruits.js et il me mets comme erreur
Uncaught SyntaxError: await is only valid in async functions, async generators and modules
Bonjour, du coup j'ai compris pourquoi cela ne fonctionnait pas, je mélangeais le synchrone et le asynchrone...j'ai lu quelque tuto et ça va mieux...l'url est dans le même dossier donc pas besoin asynchrone, il répondra de suite.