POST: Problem beim Senden einer großen Anzahl Formularfelder

  • 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

  • Moin!

    Das ist ohne den (vermutlich endlos langen Quelltext) schwer nachvollziehbar.

    Ich stell mir auch die Fragen ...

    ... wozu derart viele Anklickbuttonbenötigt werden ?
    ... wie groß das Dokument dadurch geworden ist (Servertimeout bei der Übermittlung) ?
    ... warum du die Daten mit Javascript überträgst ?

    Gib mal bitte etwas mehr Input.

    G.a.d.M.

    Ronald

  • Hallo,

    eine stark beschnittene Version des Quelltextes sollte wie folgt aussehen:

    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

  • Du hast die Methode der Übertragung nicht angegeben und dann wird es standardmäßig als Get-Variable übertragen, dabei ist die Anzahl der Zeichen dann begrenzt.

    Pprobiere mal dieses etwas abgewandelte Script aus (als 'checkbox.php' speichern), bei mir funktioniert es auch mit 3000 Checkboxen noch problemlos:

    G.a.d.M.

    ronald