Problemi con Fetch

di il
3 risposte

Problemi con Fetch

Buongiorno,

ho un problema che mi tormenta da ore e non riesco a risolverlo.

Di seguito riporto il codice che mi produce il seguente errore in Console:

Uncaught TypeError: categories.forEach is not a function
   at populateCategoryOptions

Di seguito cosa contiene l'array Data e mi sembra che restituisca un array corretto.

  1. {categories: Array(1)}
    1. categories: Array(1)
      1. 0: {cat_id: '01', desc_cat: 'Articoli'}
      2. length: 1
      3. [[Prototype]]: Array(0)

Potete gentilmente aiutarmi ?

Grazie in anticipo

function populateCategoryOptions() {
    const catPaginaSelect = document.getElementById('cat_pagina');
	console.log("pippo");
    // Esegui la query per ottenere le categorie
    // Assicurati di implementare la logica necessaria per ottenere i risultati dalla tua query
    const categories = getCategories(); // legge le categorie dalla tabella cat_pagine

    // Popola le opzioni nel tag select
    categories.forEach(category => {
        const option = document.createElement('option');
        option.value = category.cat_id; // campo cat_id della tabella cat_pagine
        option.textContent = category.desc_cat; // campo desc_cat della tabella cat_pagine

        catPaginaSelect.appendChild(option);
    });
}

// Chiamata alla funzione per popolare le opzioni delle categorie al caricamento della pagina
window.addEventListener('load', populateCategoryOptions);

// Funzione per ottenere le categorie dalla tua origine dati (ad esempio, una richiesta al server)
function getCategories() {
    return fetch(`get_categories.php`) 
        .then(response => {
            if (!response.ok) {
                throw new Error('Errore durante la richiesta delle categorie');
            }
            return response.json();
        })
        .then(data => {
           console.log('Dati ricevuti dal server:', data);

            // Verifica se 'categories' è un array prima di restituire
            return Array.isArray(data.categories) ? data.categories : [];
        })
        .catch(error => {
            console.error('Errore durante il recupero delle categorie:', error);
            return [];
        });
}

3 Risposte

  • Re: Problemi con Fetch

    Prova a dare un'occhiata qui : https://codedamn.com/news/javascript/how-to-fix-typeerror-foreach-is-not-a-function-in-javascript

    Credo che tu debba controllare meglio l'array, perché la risposta JSON è un oggetto, quindi credo tu debba usare JSON.parse. Non so, prova.

  • Re: Problemi con Fetch

    26/11/2023 - Orfeo63 ha scritto:


    Uncaught TypeError: categories.forEach is not a function
       at populateCategoryOptions

    Di seguito cosa contiene l'array Data e mi sembra che restituisca un array corretto. […]

    La funzione fetch() è asincrona e genera una Promise. Il valore che stai restituendo dalla tua funzione non è un array dei dati scaricati, ma una Promise ovvero un oggetto che ti consente di definire un callback per gestire i valori in modo asincrono una volta che li avrai scaricati.

    Sono nozioni assolutamente fondamentali per chi sviluppa in JavaScript e imprescindibili per chi utilizza le sue API.

    Leggi questo articolo che spiega il tutto.

  • Re: Problemi con Fetch

    Scusa la risposta tardiva.

    Mi sono appunto documentato, e ho modificato a dovere. L'errore in effetti era stupido, appunto da principiante.

    Grazie per l'aiuto.

Devi accedere o registrarti per scrivere nel forum
3 risposte