Michael: Seltsame Fehlermeldungen Homepage & JS-Aufruf aus PHP-Datei

Hallo,

Um Einträge in unseren Formularen überprüfen zu können habe ich in eine PHP-Datei ein externes Javaskript eingebunden (siehe [1]). Alle Felder werden beim Verlassen ("onblur") über die Javaskript-Funktion "ueberpruefung(form_nr, feld_nr, feld_art, pflicht)" sofort auf deren Inhalt überprüft (siehe [2]).

<?php
  header("Expires: Mon, 10 Jan 1970 01:01:01 GMT");
  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  header("Cache-Control: no-store, no-cache, must-revalidate");
  header("Pragma: no-cache");
?>
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="CSS_definitionen.css">
    [1] <script language="javascript" type="text/javascript" src="JS_formular.js"></script>
  </head>
  <body>
    <?php
      if (!session_id)
      {
        mt_srand((double) microtime()*1000000);
        $ip         = $REMOTE_ADDR;
        $session_id = md5(str_replace(".","",$ip) + mt_rand(100000,999999));
        $host       = gethostbyaddr($ip);
      }

echo('<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">');
      echo('<tr>');
      echo('<td width="100%">');
      echo('<form action="PHP_gaestebuch_eintrag_speichern.php" method="post">');

[...]

[2] echo('<td><input type="text" name="name" onblur="javascript:ueberpruefung(0,0,'N',1)"></td>');

[...]
    ?>
  </body>
</html>

Wenn ich die Seite aufrufe, bekomme ich den Hinweis, dass sich Fehler auf der Seite befinden:
-"Objekt erwartet in Zeile 7, Zeichen 1" -> Ist bei mir die Zeile mit "<html>" (?!?!?)
-"Syntaxfehler in Zeile 23, Zeichen 22" --> Ist bei mir die 2. echo-Zeile: echo('<tr>');

Ich finde diese Fehlermeldungen mehr als seltsam, v.a. weil ich in diesen Zeilen und auch in den Zeilen davor auch keinen Fehler finden kann.

Daran schliesst sich meine Frage, ob die Javaskript-Überprüfung aus einer PHP-Datei so funktionieren kann.

Zum besseren Verständnis: Die zu übergebenden Parameter lauten wie folgt (von links nach rechts):

Formular-Nr, Feld-Nr, Feld-Art ("N"amensfeld, "E"mail,...), Pflichtfeld

MfG, Michael

  1. Hiho,

    was die Zeilenzahl angeht. Überleg nochmal wie deine seite abläuft. Zuerst wird auf dem Server durch den PHP Code eine HTML-Seite erstellt. Diese wird an den Client geschickt und erst dort wird JavaScript ausgewertet. Das heisst javaScript weiss gar nichts davon das vorher PHP Code in der Datei war. Du musst also die Zeilen in der geparsten Datei zählen und nicht in deiner PHP-Source-Datei

    Marc

    1. Hallo Marc,

      Äääähm, und wie soll ich in geparste Datei zu Gesicht bekommen ?

      Michael

      1. Hallo Michael,

        Äääähm, und wie soll ich in geparste Datei zu Gesicht bekommen ?

        Indem du im Browser den Quelltext anschaust. btw: nimm am besten Mozilla oder Opera - die spucken ausagekräftigere Fehlermeldungen aus.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. Hallo Tobias,

          Äääähm, und wie soll ich in geparste Datei zu Gesicht bekommen ?
          Indem du im Browser den Quelltext anschaust. btw: nimm am besten Mozilla oder Opera - die spucken ausagekräftigere Fehlermeldungen aus.

          ich finde die des IE aussagekräftiger als die vom Opera7.

          WauWau

          --
          ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
          WauWau E-Mail: coming soon
          1. Hallo WauWau,

            ich finde die des IE aussagekräftiger als die vom Opera7.

            Wenn ich in die Adresszeile dieses Fensters

            "javascript:alert(document.getElementByTagName('tt').length)"

            eingebe (was falsch ist, da hinter "Element" noch ein "s" gehört), meldet der IE:

            "Das Objekt unterstützt diese Eigenschaft oder Methode nicht"

            Opera aber meldet (u.a.):

            "message: Statement on line 1: Expression did not evaluate to a function object: document.getElementByTagName"

            • was imho aussagekräftiger ist - aber es steht dir frei ein Gegenbeispiel zu bringen :-)

            Grüße aus Nürnberg
            Tobias

            --
            Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
            1. Hallo Tobias,

              ich finde die des IE aussagekräftiger als die vom Opera7.
              Wenn ich in die Adresszeile dieses Fensters
                "javascript:alert(document.getElementByTagName('tt').length)"
              (was falsch ist, da hinter "Element" noch ein "s" gehört),

              und zweitens fehlt das abschließende ";"... und ob der browser beim aufruf einer solchen adresszeile eine leere seite produziert, ist imho auch fraglich ;-)

              "Das Objekt unterstützt diese Eigenschaft oder Methode nicht"

              Genau: Das Objekt ist "document", und es kennt nicht die Methode [oder Eigenschaft, da ist sich der IE nicht so sicher ;-)] nicht. Ist vollkommen richtig, und mit einer guten zeilenangabe reicht _mir_ das.

              "message: Statement on line 1: Expression did not evaluate to a function object: document.getElementByTagName"

              es ist englich, nicht deutsch ;o) [1]

              • was imho aussagekräftiger ist - aber es steht dir frei ein Gegenbeispiel zu bringen :-)

              Jo, der IE kommt auch, wenn er keine Ahnung hat woher der fehler kommt (der ie ist ja auch dumm, ist doch klar), immer mit Debuggingfehlern an, die einem gar nix bringen, weil man dann erst den "Debugger" starten muss, der dann oft fehlerhaft beendet wird, da er sagt: "Der Quelltext kann an der entsprechenden Stelle nicht geöffnet werden" oder sowas ähnliches ;-)

              ok, du hast ja recht ;-)
              Ich finde nur die Aussagen des IE's an sich ganz nett, da sie

              1. deutsch sind
                2. kurz sind

              Ich brauche idr. keine seitenlangen einweisungen in meinen Fehler ;-)

              WauWau

              [1] *scnr*

              --
              ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
              WauWau E-Mail: coming soon
              1. Hallo WauWau,

                "javascript:alert(document.getElementByTagName('tt').length)"
                (was falsch ist, da hinter "Element" noch ein "s" gehört),
                und zweitens fehlt das abschließende ";"...

                nein, das ist optional.

                und ob der browser beim aufruf einer solchen adresszeile eine leere seite produziert, ist imho auch fraglich ;-)

                nein, er gibt mit dem "s" lediglich per alert eine 2 (es gibt 2 tt-Elemente) aus - probiers doch einfach mal aus :-)

                "Das Objekt unterstützt diese Eigenschaft oder Methode nicht"
                Genau: Das Objekt ist "document",

                ja und warum sagt er dass dann nicht?

                und es kennt nicht die Methode [oder Eigenschaft, da ist sich der IE nicht so sicher ;-)] nicht.

                Methoden habe einen Satz runde Klammern hintendran und Eigenschaften nicht, oder (wenn ich mich irre möge man mich korrigieren :-))? Das kann doch für den Browser nicht so schwer zu erkennen sein, oder?

                Ist vollkommen richtig, und mit einer guten zeilenangabe reicht _mir_ das.

                dir vielleicht - für einen Anfänger ist es aber sinnvoller wenn er eine etwas ausführlichere Fehlermeldung bekommt.

                "message: Statement on line 1: Expression did not evaluate to a function object: document.getElementByTagName"
                es ist englich, nicht deutsch ;o)

                Kunststück - es ist ja auch ein englischer Opera :-) [1]

                Ich finde nur die Aussagen des IE's an sich ganz nett, da sie
                  1. deutsch sind

                was bringen mir deutsche Fehlermeldungen wenn sie aussagelos sind? Außerdem kommst du im Internet ohne Englisch sowieso nicht allzu weit. (ok, ich gebe zu dass ich mich auch meist vor Englisch drücke - meine 2 Perl-Bücher sind jeweils die deutsche Ausgabe vom englischen Original ...)

                2. kurz sind

                mir sind ausführlichere Fehlermeldungen lieber :-)

                Grüße aus Nürnberg
                Tobias

                [1] ok, beim deutschen Opera sind die Fehlermeldungen auch englisch :-)

                --
                Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|