Und schon gar nicht den Enctype selbst erraten.
Es wird nichts geraten, das Verhalten ist so spezifiziert.
xhr errät aus
x=y
den Content-Typetext/plain; charset=UTF-8
und sendet diesen Header spontan im Request.
Es wird nichts geraten, das Verhalten ist so spezifiziert.
Ein HTML <form method="POST">, also ohne Angabe des Enctype sendet den Default Content-Type mit demselben Payload
x=y
.
-
Wenn ein Formular kein enctype-Attribut hat, wird beim Senden des Formulars implizit
application/x-www-form-urlencoded
als Kodierung gewählt. -
Wenn man
XMLHttpRequest.prototype.send
mit einemURLSearchParams
-Objekt aufruft, dann wird implizitapplication/x-www-form-urlencoded
als Kodierung gewählt. -
Wenn man
XMLHttpRequest.prototype.send
mit einemUSVString
aufruft, dann wird implizittext/plain
als Kodierung gewählt.
Die send
-Methode ist überladen. Je nach Typ des Parameters wird eine passende Kodierung gewählt. Welche Kodierung gewählt wird, musst du nicht raten, du kannst es in der Spezifikation nachlesen. Spätestens nachdem du das zweite Mal damit auf die Nase gefallen bist, solltest du das mal in Erwägung ziehen.
Man könnte also durchaus erwarten, daß sich xhr genauso wie ein Browser verhält, was jedoch definitiv nicht der Fall ist. Siehe Spezifikation (Link weiter oben).
Man könnte auch einfach mal 10 Minuten Handbuch lesen, anstatt ewig im Dunklen zu stochern.
Du müsstest dir einfach mal die Mühe machen, den Links zu folgen und die Spezifikationen zu lesen, die dir nahegelegt werden.
Ich denke eher daß sich die Entwickler von xhr und Browser mal damit befassen sollten um hier ein einheitliches Verhalten vorzulegen.
Erstens, lies die Spezifikation bevor du sie kritisierst. Zweitens, kritisier die Spezifikation inhaltlich, nicht ihre Autor*innen.