• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

POST: Problem beim Senden einer großen Anzahl Formularfelder

Status
Für weitere Antworten geschlossen.

emh

Neues Mitglied
Hallo,

ich habe folgendes Problem, dass das Absenden eines Formulars (mit POST) nicht mehr funktioniert, wenn die Anzahl der zu übermittelnden Felder sehr groß wird.

Bei der HTML-Seite handelt es sich um eine Seite, die Daten aus einer Datenbank in einer Tabelle darstellt. Zu jedem Eintrag existiert eine Checkbox. Wenn der User nun nur ein paar Checkboxen anklickt, funktioniert alles prima, die jeweiligen Checkboxen werden als Formularfelder übertragen usw.

Wenn er aber bspw. alle markiert (und das sind bei mir im Testfall gerade 1000), dann funktioniert die CGI-Übermittlung nicht mehr.
Stattdessen wirft der Browser einen JavaScript-Fehler, nämlich "Ungültige Syntax in Zeile ...", und zwar genau in der Zeile, in der die JavaScript-Funktion formular.submit(); aufgerufen wird.

Wo liegt der Fehler / das Problem? JavaScript kann ich mir eigentlich nicht vorstellen. Liegt das Problem beim Versenden einer riesigen Anzahl an Formularfelder via POST?

Gruß emh
 
Hi,

dürfte nicht an der Größe liegen. Könntest aber mal testweise nur zwei, drei Felder nehmen und es dann testen.

Ansonsten zeig am besten mal etwas Code (nicht alle tausend Checkboxen, sondern eine und den Code für die Buttons zum Senden...).

Vielleicht hat sich ja doch ein Fehler eingschlichen.

mfg - spacegaier

EDIT:// Mist da war WEb_Spider mal wieder schneller!
 
Hallo,

Ansonsten zeig am besten mal etwas Code (nicht alle tausend Checkboxen, sondern eine und den Code für die Buttons zum Senden...).

also eine stark beschnittene Version des Quelltextes sollte wie folgt aussehen:

Code:
<html>
<head>
</head>
<script type="text/javascript"><!--
function submitData() {
    // check formular data and return false or true
    var isFormValid = true;
    // ...
    return isFormValid;
}
        
setInterval("doReload()", "30000");

function doReload() {
  document.formular.submit();
}
--></script>

<body>
<form name="formular" action="/CalledServlet" onSubmit="return submitData()">
<input type="submit" name="submitButton" value="Submit">
<input type="checkbox" name="checkbox1" value="1">
<input type="checkbox" name="checkbox2" value="2">
<input type="checkbox" name="checkbox3" value="3">
<!-- ... -->
<input type="checkbox" name="checkbox1000" value="1000">
</form>
</body>
</html>
Die Anzahl der Checkboxen hängt schlicht und einfach von der Anzahl der Einträge in der Datenbank ab. Das Absenden des Formulars erfolgt über JavaScript, da ein Absenden, wie im Code ersichtlich, aus mehreren Gründen erfolgen kann, z. B. über ein automatisches Reload. Das Problem tritt aber auch auf, wenn das Formular direkt abgeschickt wird.

Wie gesagt, der Code funktioniert voll und ganz, wenn die Anzahl der (angeklickten) Checkboxen (und damit die Anzahl der übermittelten Felder) nicht zu groß wird, doch bei einem TestCase von tausend angeklickten Checkboxen wird das Formular gar nicht erst abgeschickt (also kein Server-Timeout), sondern ein JavaScript-Fehler erscheint an der jeweiligen JavaScript-Zeile, in der das Formular abgeschickt wird.
Also im Falle eines autom. Reloads in der Zeile document.formular.submit();

Wird das Formular normal abgeschickt, passiert gar nichts mehr.

Der TestCase mit den 1000 Checkboxen mag konstruiert erscheinen, aber ich würde doch gerne wiesen wie und wieso dieses Verhalten zustande kommt.

Gruß emh
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben