Die FormData API
Erfassen Sie Formulardaten programmgesteuert mit der FormData-Schnittstelle
Die FormData API ist eine kostenlose HTML Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des HTML Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der HTML Academy-Kurs umfasst insgesamt 4 Lektionen.
Was FormData ist
FormData ist ein integriertes Objekt, das Formularfelder und ihre Werte repräsentiert und sich zum direkten Senden über fetch oder XMLHttpRequest eignet. Es verarbeitet Datei-Uploads, Multipart-Kodierung und beliebige Schlüssel-Wert-Paare ohne manuelle Serialisierung.
Aus einem Formular erstellen
Übergeben Sie dem Konstruktor ein <form>-Element: const data = new FormData(formElement). Das Ergebnis enthält jedes erfolgreiche Formularelement (benannte Inputs, Selects, Textareas, aktivierte Checkboxen und Dateien). Deaktivierte und nicht angehakte Elemente werden automatisch ausgeschlossen.
document.forms.checkout.addEventListener("submit", async (e) => {
e.preventDefault();
const data = new FormData(e.target);
await fetch("/api/checkout", { method: "POST", body: data });
});Mit fetch senden
Wenn Sie FormData als Body von fetch übergeben, wird der Content-Type der Anfrage automatisch auf multipart/form-data gesetzt (mit der richtigen Boundary). Setzen Sie Content-Type nicht manuell — fetch muss die Boundary selbst erzeugen.
Append, Set, Delete
data.append(key, value) fügt einen Schlüssel hinzu (Dubletten sind erlaubt). data.set(key, value) ersetzt alle vorhandenen Werte für diesen Schlüssel. data.delete(key) entfernt alle Werte für einen Schlüssel. data.has(key) prüft, ob der Schlüssel vorhanden ist.
const data = new FormData();
data.append("tag", "html");
data.append("tag", "css");
console.log(data.getAll("tag")); // ["html", "css"]Datei-Uploads
FormData verarbeitet Dateien transparent: data.append("avatar", fileInput.files[0]). Der Server empfängt einen Multipart-Upload mit dem Dateinamen und dem MIME-Typ der Datei. Dies ist die Standardmethode für Datei-Uploads mit fetch in modernem Code.
Iterieren
FormData ist iterierbar: for (const [key, value] of data) { ... }. Verwenden Sie data.entries(), data.keys() oder data.values() für bestimmte Iterationen. Das ist nützlich für Protokollierung, Validierung oder zum Erstellen einer JSON-Kopie des Formulars.
In JSON konvertieren
Um statt Multipart JSON zu senden, erzeugt Object.fromEntries(data) ein einfaches Objekt — dabei gehen doppelte Schlüssel verloren. Für die korrekte Verarbeitung doppelter Schlüssel iterieren Sie über die Einträge und gruppieren Sie sie manuell. Bei reinen JSON-APIs ist es einfacher, das Objekt direkt zu erstellen, ohne FormData zu verwenden.
Programmatisch befüllen
Erstellen Sie ein leeres FormData-Objekt und hängen Sie Werte manuell an: const data = new FormData(); data.append("title", title); data.append("file", file);. Das ist nützlich, wenn die zu sendenden Daten nicht aus einem Formular stammen (per Drag-and-drop abgelegte Dateien, API-Antworten oder generierte Payloads).
Submitter erkennen
Wenn mehrere Submit-Buttons vorhanden sind, übergeben Sie den Submitter als zweites Argument an FormData: new FormData(form, e.submitter). Name und Wert des Submitters werden in die Daten aufgenommen — wichtig für Formulare mit mehreren Aktionen.
Verwandter von URLSearchParams
Für die application/x-www-form-urlencoded-Kodierung (die standardmäßige Formular-Kodierung ohne Dateien) erstellen Sie URLSearchParams aus FormData: new URLSearchParams(data). Das ist für reine Textformulare effizienter als Multipart.
Häufiger Fehler
Das explizite Setzen des Content-Type-Headers von fetch auf "multipart/form-data" macht den Upload kaputt — der Browser kann die erforderliche Boundary nicht mehr hinzufügen. Lassen Sie Content-Type beim Senden von FormData weg und überlassen Sie die Verarbeitung fetch.
Wissensüberprüfung
Warum sollten Sie Content-Type beim Senden von FormData mit fetch NICHT manuell setzen?
Zusammenfassung
FormData repräsentiert Formularinhalte und lässt sich mit fetch problemlos senden — einschließlich Datei-Uploads über multipart/form-data. Erstellen Sie es aus einem Formularelement, fügen Sie Einträge hinzu, ersetzen oder löschen Sie sie und iterieren Sie bei Bedarf darüber. Setzen Sie Content-Type beim Senden nicht — fetch erzeugt die Boundary automatisch. Verwenden Sie URLSearchParams für urlencoded-Formulare, die nur Text enthalten.
Häufig gestellte Fragen
Ist die Lektion „Die FormData API“ kostenlos?
Ja — der vollständige Text von „Die FormData API“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des HTML Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der HTML Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Die FormData API“?
Erfassen Sie Formulardaten programmgesteuert mit der FormData-Schnittstelle Du übst HTML Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um HTML Academy zu starten?
Keine Vorkenntnisse erforderlich. HTML Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Die FormData API“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser HTML Academy-Lektion Code schreiben und ausführen?
Ja. Jede HTML Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Die FormData API
- Die Constraint Validation API
- reportValidity und setCustomValidity
- Formular-Reset-Ereignisse und Zustandsverwaltung