L’API `FormData`
Collectez programmatiquement les données d’un formulaire avec l’interface `FormData`.
L’API `FormData` est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.
Ce qu’est FormData
FormData est un objet intégré qui représente les champs d’un formulaire et leurs valeurs, et qui convient à un envoi direct via fetch ou XMLHttpRequest. Il gère les téléversements de fichiers, l’encodage multipart et les paires clé-valeur arbitraires sans sérialisation manuelle.
Créer à partir d’un formulaire
Passez un élément <form> au constructeur : const data = new FormData(formElement). Le résultat contient chaque contrôle de formulaire valide (entrées nommées, listes de sélection, zones de texte, cases à cocher sélectionnées, fichiers). Les contrôles désactivés ou non cochés sont automatiquement exclus.
document.forms.checkout.addEventListener("submit", async (e) => {
e.preventDefault();
const data = new FormData(e.target);
await fetch("/api/checkout", { method: "POST", body: data });
});Envoyer avec fetch
Passer FormData comme corps de la requête de fetch définit automatiquement le Content-Type de la requête sur multipart/form-data (avec la bonne limite). Ne définissez pas Content-Type manuellement : fetch doit générer lui-même la limite.
Ajouter, définir, supprimer
data.append(key, value) ajoute une clé (en autorisant les doublons). data.set(key, value) remplace toute valeur existante pour la clé. data.delete(key) supprime toutes les valeurs d’une clé. data.has(key) vérifie sa présence.
const data = new FormData();
data.append("tag", "html");
data.append("tag", "css");
console.log(data.getAll("tag")); // ["html", "css"]Téléversements de fichiers
FormData gère les fichiers de manière transparente : data.append("avatar", fileInput.files[0]). Le serveur reçoit un téléversement multipart avec le nom et le type MIME du fichier. C’est la méthode standard pour téléverser des fichiers avec fetch dans le code moderne.
Parcourir les données
FormData est itérable : for (const [key, value] of data) { ... }. Utilisez data.entries(), data.keys() ou data.values() pour des parcours particuliers. C’est utile pour la journalisation, la validation ou la création d’une copie JSON du formulaire.
Convertir en JSON
Pour envoyer les données en JSON plutôt qu’en multipart : Object.fromEntries(data) produit un objet simple, mais perd les clés en double. Pour gérer correctement les doublons, parcourez les entrées et regroupez-les manuellement. Pour les API exclusivement JSON, il est plus simple de construire directement l’objet sans passer par FormData.
Remplissage programmatique
Construisez un FormData vide et ajoutez manuellement les valeurs : const data = new FormData(); data.append("title", title); data.append("file", file);. C’est utile pour envoyer des données qui ne proviennent pas d’un formulaire (fichiers déposés par glisser-déposer, réponses d’API, données générées).
Détection du bouton d’envoi
Si plusieurs boutons d’envoi existent, passez le bouton utilisé comme deuxième argument à FormData : new FormData(form, e.submitter). Le nom et la valeur de ce bouton sont inclus dans les données, ce qui est important pour les formulaires comportant plusieurs actions.
Le cousin URLSearchParams
Pour l’encodage application/x-www-form-urlencoded (l’encodage de formulaire par défaut sans fichiers), construisez un URLSearchParams à partir de FormData : new URLSearchParams(data). Cette méthode est moins coûteuse que multipart pour les formulaires contenant uniquement du texte.
Piège courant
Définir explicitement l’en-tête Content-Type de fetch sur « multipart/form-data » interrompt le téléversement : le navigateur ne peut alors plus ajouter la limite requise. Omettez Content-Type lorsque vous envoyez FormData et laissez fetch s’en charger.
Vérification des connaissances
Pourquoi ne devez-vous pas (NOT) définir manuellement Content-Type lorsque vous envoyez FormData avec fetch ?
Résumé
FormData représente le contenu des formulaires et s’envoie proprement avec fetch, y compris les téléversements de fichiers via multipart/form-data. Créez-le à partir d’un élément de formulaire, ajoutez, définissez ou supprimez les entrées, puis parcourez-les selon vos besoins. Ne définissez pas Content-Type lors de l’envoi : fetch génère automatiquement la limite. Utilisez URLSearchParams pour les formulaires encodés en URL contenant uniquement du texte.
Questions Fréquemment Posées
La leçon « L’API `FormData` » est-elle gratuite ?
Oui — le texte complet de « L’API `FormData` » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « L’API `FormData` » ?
Collectez programmatiquement les données d’un formulaire avec l’interface `FormData`. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer HTML Academy ?
Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « L’API `FormData` » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?
Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- L’API `FormData`
- L’API de validation des contraintes
- `reportValidity` et `setCustomValidity`
- Événements de réinitialisation des formulaires et gestion de l’état