Tach!
Meine Empfehlung: Wenn Du selbst da was bauen willst: Erzeuge als Zwischenschritt nicht gleich einen bestimmten Enctype sondern eine Datenstruktur -- aus welcher Du dann in einem weiteren Schritt beliebige Content-Types erzeugen kannst!
Gut, dann in Einzelschritten. Gegeben sei dies wunderschöne Formular.
<form id="ff">
<input name="foo" value="fooval">
<input name="bar" value="barval">
</form>
Davon holen wir uns erstmal eine Referenz in modernem Javascript. Das heißt, dass diese in eine Konstante kommt und nicht nur ein schnödes var
, denn am Inhalt der Variable wird sich nichts mehr ändern.
const ff = document.querySelector("#ff");
Als nächstes kommt die geforderte Datenstruktur, die von allen weiteren Verarbeitungswünschen unabhängig ist, ein FormData-Objekt.
const formData = new FormData(ff);
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.
const queryString = new URLSearchParams(formData).toString();
Der Rest ist die Verheiratung mit dem anderen Teil der URL, eine einfache String-Operation.
application/x-www-form-urlencoded ist ja schließlich nicht alles und wenn Dein Auftraggeber zum Beispiel einen Content-Type
application/json
oderxml
verlangt,
Dazu muss er erstmal genau definieren, wie die Datenstruktur in JSON oder XML aussehen soll. Aber auch das ist mit Umwandlung aus FormData kein unlösbares Problem.
Überlege Dir also wie diesbezügliche Datenstrukturen aussehen könnten.
Es wäre sehr nett, wenn du nicht vom Thema ablenken würdest. Da steht immer noch deine für mich nicht nachvollziehbare Behauptung im Raum, meine Ersatzlösung würde Müll liefern.
dedlfix.