0Pricing
HTML Academy · Lezione

La FormData API

Raccogliere programmaticamente i dati dei moduli con l’interfaccia FormData

La FormData API è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.

Che cos'è FormData

FormData è un oggetto integrato che rappresenta i campi di un modulo e i relativi valori, adatto all'invio diretto tramite fetch o XMLHttpRequest. Gestisce il caricamento dei file, la codifica multipart e coppie chiave-valore arbitrarie senza serializzazione manuale.

Creazione da un modulo

Passi un elemento <form> al costruttore: const data = new FormData(formElement). Il risultato contiene tutti i controlli del modulo inclusi nell'invio: input con nome, select, textarea, checkbox selezionate e file. I controlli disabilitati e quelli non selezionati vengono esclusi automaticamente.

document.forms.checkout.addEventListener("submit", async (e) => {
  e.preventDefault();
  const data = new FormData(e.target);
  await fetch("/api/checkout", { method: "POST", body: data });
});

Invio con fetch

Passare FormData come body di fetch imposta automaticamente il Content-Type della richiesta su multipart/form-data, con il boundary corretto. Non imposti Content-Type manualmente: fetch deve generare il boundary autonomamente.

Aggiunta, sostituzione ed eliminazione

data.append(key, value) aggiunge una chiave, consentendo duplicati. data.set(key, value) sostituisce qualsiasi valore esistente per la chiave. data.delete(key) rimuove tutti i valori di una chiave. data.has(key) verifica la presenza.

const data = new FormData();
data.append("tag", "html");
data.append("tag", "css");
console.log(data.getAll("tag")); // ["html", "css"]

Caricamento dei file

FormData gestisce i file in modo trasparente: data.append("avatar", fileInput.files[0]). Il server riceve un caricamento multipart con il nome e il tipo MIME del file. Questo è il modo standard per caricare file con fetch nel codice moderno.

Iterazione

FormData è iterabile: for (const [key, value] of data) { ... }. Usi data.entries(), data.keys() e data.values() per iterazioni specifiche. È utile per registrare dati, eseguire validazioni o costruire una copia JSON del modulo.

Conversione in JSON

Per inviare JSON anziché multipart: Object.fromEntries(data) produce un oggetto semplice, ma perde le chiavi duplicate. Per gestire correttamente i duplicati, iteri sulle entries e le raggruppi manualmente. Per le API esclusivamente JSON, è più semplice costruire direttamente l'oggetto senza passare da FormData.

Popolamento programmatico

Costruisca un FormData vuoto e aggiunga manualmente i valori: const data = new FormData(); data.append("title", title); data.append("file", file);. È utile quando si inviano dati che non provengono da un modulo, come file trascinati, risposte API o payload generati.

Rilevamento del submitter

Se sono presenti più pulsanti di invio, passi il submitter come secondo argomento a FormData: new FormData(form, e.submitter). Il nome e il valore del submitter vengono inclusi nei dati, un aspetto importante per i moduli con più azioni.

Il corrispettivo URLSearchParams

Per la codifica application/x-www-form-urlencoded, ovvero la codifica predefinita dei moduli senza file, costruisca un URLSearchParams da FormData: new URLSearchParams(data). È meno oneroso di multipart per i moduli costituiti solo da testo.

Errore comune

Impostare esplicitamente l'header Content-Type di fetch su "multipart/form-data" interrompe il caricamento: il browser non può più aggiungere il boundary richiesto. Ometta Content-Type quando invia FormData e lasci che sia fetch a gestirlo.

Verifica delle conoscenze

Perché NON deve impostare manualmente Content-Type quando invia FormData con fetch?

Riepilogo

FormData rappresenta il contenuto di un modulo e lo invia correttamente con fetch, inclusi i caricamenti di file tramite multipart/form-data. Lo costruisca da un elemento modulo, aggiunga, sostituisca o elimini le entries e le iteri secondo necessità. Non imposti Content-Type durante l'invio: fetch genera automaticamente il boundary. Usi URLSearchParams per i moduli urlencoded composti solo da testo.

Domande Frequenti

La lezione «La FormData API» è gratuita?

Sì — il testo completo di «La FormData API» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.

Cosa imparerò in «La FormData API»?

Raccogliere programmaticamente i dati dei moduli con l’interfaccia FormData Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare HTML Academy?

Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «La FormData API»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione HTML Academy?

Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. La FormData API
  2. La Constraint Validation API
  3. reportValidity e setCustomValidity
  4. Eventi di reset dei moduli e gestione dello stato
← Torna a HTML Academy