hidden fields werden nicht übermittelt
Dirk Ulrich
- html
0 Struppi
0 salt0 Dirk Ulrich0 Dirk Ulrich0 salt
0 Dirk Ulrich
Wenn ich ein Formular folgendermaßen definiere:
<form name="uploadForm" action="myPage.html" enctype="multipart/form-data" method="POST">
<input type="hidden" name="uploadVal" value="${aValue}" />
<input type="button" name="SubButton" value="UPLOAD" onclick="checkFields();"/>
</form>
dann werden die hidden fields nicht übermittelt. Im Servlet sind diese nicht im Reqeust-Objekt zu finden.
Im aufgerufenen JavaScript wird beim Klick auf den Button erfolgreich ein Wert gesetzt. (Tets mit alert(...);.)
Welchen Fehler übersehe ich?
Danke,
Dirk
Welchen Fehler übersehe ich?
Keinen, genauso funktioniert es.
Struppi.
ich schätze, du machst den submit des formulars letztendlich mit der checkFields-funktion?
ich schätze, du machst den submit des formulars letztendlich mit der checkFields-funktion?
jupp
ich schätze, du machst den submit des formulars letztendlich mit der checkFields-funktion?
function checkValues()
{
if ( document.getElementById("aValue").checked )
{
alert("Checked!");
document.forms["uploadForm"].uploadValues.value = "true";
alert(document.forms["uploadForm"].uploadValues.value);
}
document.forms["uploadForm"].submit();
return true;
}
also hier
document.forms["uploadForm"].uploadValues.value = "true";
greifst du auf ein Element zu, welches wohl eigentlich micht uploadValues sondern "uploadVal" heisst.
also hier
document.forms["uploadForm"].uploadValues.value = "true";
greifst du auf ein Element zu, welches wohl eigentlich micht uploadValues sondern "uploadVal" heisst.
Sorry, dass war ein Abschreibfehler von mir (Namensabänderung).
document.forms["uploadForm"].uploadVal.value = "true";
So habe ich es auch.
document.forms["uploadForm"].uploadVal.value = "true";
So habe ich es auch.
So sollte es auch gehen.
Das:
document.forms["uploadForm"].submit();
return true;
ist übrigens Unsinn, entweder nur submit() oder return false, ich würde beides rauschmeissen.
Struppi.
ist übrigens Unsinn, entweder nur submit() oder return false, ich würde beides rauschmeissen.
Aber das submit() muss doch an ein Objekt gebunden sein. anderenfalls gibt es einen JavaScript-Fehler.
Und return false würde doch bedeuten, dass kein submit erfolgen soll. Soll es aber in jedem Fall.
Der check soll lediglich vor dem submit dafür sorgen, dass die hidden fields gefüllt werden.
Aber das submit() muss doch an ein Objekt gebunden sein. anderenfalls gibt es einen JavaScript-Fehler.
Ich meine die kompletten Zeilen.
Und return false würde doch bedeuten, dass kein submit erfolgen soll. Soll es aber in jedem Fall.
zweimal?
Der check soll lediglich vor dem submit dafür sorgen, dass die hidden fields gefüllt werden.
Ist schon klar, dann rufst du submit auf und dann "submittest" du das Formular, d.h. im Prinzip wird das formular zweimal abgeschickt.
Wie gesagt, schmeiss den JS submit raus und das return return false ebenfalls, dann wird dein Formular abgeschickt, mit allen Werten
Struppi.
Ist schon klar, dann rufst du submit auf und dann "submittest" du das Formular, d.h. im Prinzip wird das formular zweimal abgeschickt.
Mmmh. Steh ich auf dem Schlauch? 2x submitted werden würde es, wenn der type des Buttons "submit" wäre, oder? Ist aber vom type "button".
Gruß
Dirk
Ist schon klar, dann rufst du submit auf und dann "submittest" du das Formular, d.h. im Prinzip wird das formular zweimal abgeschickt.
Mmmh. Steh ich auf dem Schlauch? 2x submitted werden würde es, wenn der type des Buttons "submit" wäre, oder? Ist aber vom type "button".
stimmt, ich dachte das wäre selbstverständlich und hab den Code nicht so genau angeschaut, dann ist das return false überflüssig, da der button ja nichts macht. Dann kann ich dein Problem aber nicht nachvollziehen, wenn die Werte nicht ankommen ist irgendwo etwas falsch, aber nicht im JS.
Allerdings würde ich nicht auf den submit button verzichten, du musst so oder so eine Serverseitige Überprüfung machen und das formular funktioniert dann auch ohne JS und ist einfacher zu programmieren.
Struppi.
stimmt, ich dachte das wäre selbstverständlich und hab den Code nicht so genau angeschaut, dann ist das return false überflüssig, da der button ja nichts macht. Dann kann ich dein Problem aber nicht nachvollziehen, wenn die Werte nicht ankommen ist irgendwo etwas falsch, aber nicht im JS.
Allerdings würde ich nicht auf den submit button verzichten, du musst so oder so eine Serverseitige Überprüfung machen und das formular funktioniert dann auch ohne JS und ist einfacher zu programmieren.
Ich hatte den "Fehler" schon gefunden: --> http://forum.de.selfhtml.org/?t=163767&m=1066915
Vielen Dank aber trotzdem.
Gruß
Dirk
PS: Java-Projekt in Berlin bekannt, wo Java-Spezis gesucht werden? :-)
Der Fehler liegt hier (und ist eigentlich gar keiner):
<form name="uploadForm" action="myPage.html" enctype="multipart/form-data" method="POST">
Das Encoding: enctype="multipart/form-data" führt dazu, dass ich im Servlet nicht einfach den Request auslesen kann. Hier muss ein sog. FileItem-Objekt instanziiert werden. Damit kann geprüft werden, ob es sich um ein Formularfeld handelt (isformField()), oder um ein hochgeladenes File. Dann kann ich damit entsprechend umgehen.
Gruß
Dirk