Julian Hofmann: + (PERL) Formular: Meldung "Dokument enthält keine Daten"

Hallo,

schon öfters bin ich im ZUsammenhang mit der Auswertung (oder dem Versuch davon) von HTML-Formularen mittels Perl auf das Problem gestoßen, daß Netscape meldet "Dokument enthält keine Daten".
Leider konnte ich bisher mit der Meldung recht wenig anfangen. Zum einen sind meine Formulare stets gleich aufgebaut (und laufen dann auch manchmal), zum anderen verwende ich auch das gleiche Script zur Auswertung der Daten. Daher meine Frage: Woher kommt diese Meldung eigentlich? Von HTML-Seite oder seitens Perl? Und v. a. wodurch kann so ein Fehler austauchen?

Gruß aus Bayreuth
    Julian

  1. Hi Julian

    schon öfters bin ich im ZUsammenhang mit der Auswertung (oder dem Versuch davon) von HTML-Formularen mittels Perl auf das Problem gestoßen, daß Netscape meldet "Dokument enthält keine Daten".
    Leider konnte ich bisher mit der Meldung recht wenig anfangen. Zum einen sind meine Formulare stets gleich aufgebaut (und laufen dann auch manchmal), zum anderen verwende ich auch das gleiche Script zur Auswertung der Daten. Daher meine Frage: Woher kommt diese Meldung eigentlich? Von HTML-Seite oder seitens Perl? Und v. a. wodurch kann so ein Fehler austauchen?

    Das meldet NS, wenn es vom Perl-Script nur den HTTP-Header bekommt, aber nichts mehr weiter. D.h. der Fehler liegt beim Perl-Script. Vielleicht gibt es da irgendeinen Sonderfall, bei dem es nichts zurueckgibt; deshalb der Fehler, der nur ab und zu vorkommt.

    Gruss,
    Beat

    1. Hi,

      schon öfters bin ich im ZUsammenhang mit der Auswertung (oder dem Versuch davon) von HTML-Formularen mittels Perl auf das Problem gestoßen, daß Netscape meldet "Dokument enthält keine Daten".

      Das meldet NS, wenn es vom Perl-Script nur den HTTP-Header bekommt, aber nichts mehr weiter. D.h. der Fehler liegt beim Perl-Script. Vielleicht gibt es da irgendeinen Sonderfall, bei dem es nichts zurueckgibt; deshalb der Fehler, der nur ab und zu vorkommt.

      exakt. Untersuche Dein Script vor allem darauf, ob irgendwo durch 0 geteilt wird oder eine Subroutine angesprungen wird, die nicht existiert - das sind die beiden klassischen Abbruchbedingungen (neben exit).

      Cheatah

      1. Das meldet NS, wenn es vom Perl-Script nur den HTTP-Header bekommt, aber nichts mehr weiter. D.h. der Fehler liegt beim Perl-Script. Vielleicht gibt es da irgendeinen Sonderfall, bei dem es nichts zurueckgibt; deshalb der Fehler, der nur ab und zu vorkommt.
        exakt. Untersuche Dein Script vor allem darauf, ob irgendwo durch 0 geteilt wird oder eine Subroutine angesprungen wird, die nicht existiert - das sind die beiden klassischen Abbruchbedingungen (neben exit).

        Wenn das CGI-Skript immerhin so weit kommt, daß es einen korrekten http-Header zurücksendet und dann aber kein HTML-Dokument erzeugt, muß der Fehler eigentlich relativ weit vorne auftreten.

        Ich würde in diesem Falle versuchen, den HTML-Dokumentkopf gleich als erste Operation des CGI-Skripts zu erzeugen. Wenn nämlich der korrekte Anfang eines HTML-Dokuments beim Browser ankommt, dann ist die Chance hoch, daß eine beliebige Meldung, die das Programm bei seinem Absturz ausgibt, bereits als Bestandteil des BODY vom Browser angezeugt wird - und dann kannst Du die entsprechende Fehlermeldung einfach im Browser lesen.

        Wenn überhaupt nichts kommt, nicht mal eine Fehlermeldung, dann steigt entweder das Programm aus, ohne etwas zu erzeugen (also Logikfehler), oder die Fehlermeldung geht nicht nach stdout, sondern z.B. nach stderr. In diesem Falle könnte man versuchen, UM DAS CGI-PROGRAMM HERUM ein Programm (ein kleines shell-Skript?) laufen zu lassen (auch über diese CGI-Schnittstelle), welches stderr nach stdout umlenkt. Auch das führt dazu, daß man die Fehlermeldung direkt im Browser lesen kann - der Webserver muß halt nur begreifen, wohin Du sie haben willst, und meines Wissens kommt bei CGI-Anwendungen eben stdout zum Browser zurück und stderr nicht.