FormData-Methoden zur Prüfung und Änderung

FormData ist der beste Freund von XHR-Nutzern und wird in Chrome 50 aktualisiert. Wir fügen Methoden hinzu, mit denen Sie Ihre FormData-Objekte prüfen oder nachträglich ändern können. Sie können jetzt get(), delete() und Iterationshilfen wie entries und keys verwenden. Hier findest du die vollständige Liste.

Wenn Sie FormData noch nicht verwenden, ist es eine einfache, gut unterstützte API, mit der Sie programmatisch ein virtuelles Formular erstellen und mit window.fetch() oder XMLHttpRequest.send(formData) an einen entfernten Ort senden können.

Einige Beispiele findest du weiter unten.

Echte Formulare wie ein Profi parsen

FormData kann aus einem echten HTML-Formular erstellt werden, wobei ein Snapshot aller aktuellen Werte erstellt wird. Früher war das Objekt jedoch vollständig undurchsichtig. Sie konnten sie nur unverändert an einen Server weiterleiten. Jetzt kannst du sie verwenden, ändern, verkleinern, vergrößern, beobachten, anpassen und schließlich hochladen:

function sendRequest(theFormElement) {
    var formData = new FormData(theFormElement);
    formData.delete("secret_user_data"); // don't include this one!
    if (formData.has("include_favorite_color")) {
    formData.set("color", userPrefs.getColor());
    }
    // log all values like <input name="widget">
    console.info("User selected widgets", formData.getAll("widget"));

    window.fetch(url, {method: 'POST', body: formData});
}

Sie können FormData auch über die ältere XMLHttpRequest senden:

var x = new XMLHttpRequest();
x.open('POST', url);
x.send(formData);

FormData nicht wegwerfen

Wenn Sie Ihre eigene FormData von Grund auf neu erstellen, ist es möglicherweise frustrierend, dass Sie sie nicht wiederverwenden können. Sie haben viel Zeit für diese Felder aufgewendet. Da sowohl die window.fetch()- als auch die XMLHttpRequest.send()-Methode einen Snapshot des FormData erstellt, können Sie Ihre Arbeit jetzt wiederverwenden und ändern. Sehen Sie sich dieses Beispiel an:

// append allows multiple values for the same key
var formData = new FormData();
formData.append("article", "id-123");
formData.append("article", "id-42");

// send like request
formData.set("action", "like");
window.fetch(url, {method: 'POST', body: formData});

// send reshare request
formData.set("action", "reshare");  // overrides previous "action"
window.fetch(url, {method: 'POST', body: formData});