form.submit() async

20/09/2015 - 15:40 von Sascha Hüdepohl | Report spam
Hallo!

Angenommen ich hab ein Formular.
Es hat einen Button mit onclick.
Im onlick-Callback mache ich einen Ajax-Request und wenn der
erfolgreich war möchte ich das Formular mit form.submit() absenden.

Das funktioniert so nicht. Soweit ich es verstehe liegt das daran, daß
das submit() nicht mehr in der selben Ausführungseinheit des
Event-Loops ist wie der ursprüngliche Klick-Event und der Browser es
aus Sicherheitsgründen nicht ausführt.

Liege ich da ungefàhr richtig?



Gruß
Sascha
 

Lesen sie die antworten

#1 Thomas PointedEars Lahn
20/09/2015 - 16:17 | Warnen spam
Sascha Hüdepohl wrote:

Angenommen ich hab ein Formular.
Es hat einen Button mit onclick.



Dies sollte ein Submit-Button sein, und es sollte sich um einen submit-
Event-Listener am Formular handeln, damit das Formular auch ohne
clientseitiges Scripting abgesendet werden kann.

Im onlick-Callback



im _click-Event-Listener_ (jedoch siehe oben)

mache ich einen Ajax-Request und wenn der



Es gibt keinen „Ajax-Request“. Die hier wahrscheinlich verwendete
Technologie heisst XMLHttpRequest; was da passiert, ist ein ganz
normaler HTTP-Request, allerdings im Hintergrund.

„Ajax“ ist ein Begriff aus der Anfangszeit, der im Grunde falsch ist, sich
aber aufgrund seiner Griffigkeit hartnàckig bei einigen Leuten (vor allem
bei Laien) hàlt. Ursprünglich bedeutete er „Asynchronous JavaScript and
XML“. Weder muss aber die Behandlung des HTTP-Requests und der
entsprechenden HTTP-Response asynchron sein (obgleich das empfohlen wird),
noch muss das mit JavaScript als Programmiersprache passieren, und XML wird
in den meisten Fàllen auch nicht mehr zur Datenübertragung verwendet (da es
zwar strukturiert ist, aber auch sehr viel Overhead hat; JSON ist hierzu
eine Alternative).

erfolgreich war möchte ich das Formular mit form.submit() absenden.

Das funktioniert so nicht.



Doch, das funktioniert. Die Sinnhaftigkeit ist eine andere Frage.

Soweit ich es verstehe liegt das daran, daß das submit() nicht mehr in der
selben Ausführungseinheit des Event-Loops ist wie der ursprüngliche Klick-
Event und der Browser es aus Sicherheitsgründen nicht ausführt.

Liege ich da ungefàhr richtig?



Nein, das ist grober Unfug.

Leider hat meine <http://glasgoogle.de/> gerade Ferien.

PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
Please do not cc me. / Bitte keine Kopien per E-Mail.

Ähnliche fragen