Hi,
Als nächstes kommt die geforderte Datenstruktur, die von allen weiteren Verarbeitungswünschen unabhängig ist, ein FormData-Objekt.
Oh das hatten wir doch geklärt, daß dieser Enctype eben nicht von allen weiteren Verarbeitungsünschen unabhängig ist. Datenstrukturen sind für den wahlfreien Zugriff, FormData hingegen für den Transport. Wie der String für den Enctype multipart/form-data aussieht kannst Du Dir hier anschauen.
Und dann verzweigt es sich. Möchte ich einen POST-Request absetzen, bei dem der Payload in den Body kommt, als multipart/form-data, muss ich nichts weiter machen, als das FormData-Objekt dem fetch() oder XHR.send() zu übergeben. Nur wenn die Formulardaten in die URL sollen, braucht es einen Querystring in application/x-www-form-urlencoded.
Das mag Deine ganz persönliche Logik sein geht aber am Thema völlig vorbei! Hier die Grundlagen.
Und Überhaupt: Was willst Du denn mit einem FormData-Objekt wenn die Daten per application/x-www-form-urlencoded im MessageBody gesendet werden sollen!?
Btw. XML, JSON sind auch keine Datenstrukturen sondern nur unterschiedliche Verpackungen für Datenstrukturen. Genauso wie der Enctype multipart/form-data auch nur ein Verpackung ist. Geläufig ist auch der Begriff der Serialisierung, Datenstrukturen wie JS-Arrays, JS-Objekte werden serialisiert und damit zu Strings gemacht.
Genau das tut jQuery(form).serialize() wobei diese Funktion genau wie new FormData(form) die Daten nicht aus einer Datenstruktur bezieht sondern direkt aus dem Formular.
Meine Serializer sind übrigens schon lange fertig, D.h., Deine Serializer-Lösung steht für mich gar nicht zur Debatte. Ich hatte hier lediglich dargestellt, daß es für jQuery(form).serialize() keinen Ersatz gibt (beachte den Enctype) und eben nur die Eigenlösung bleibt.
MfG
PS: Ich erachte es als nicht sinnvoll, daß Du immer wieder das Thema FormData hervorwürgst, also immer wieder damit von vorn anfängst!