Martin aus Wien: Verwirrung mit php include und javascript

Hallo,

ich habe eine Datei a.php und eine datei b.php.

in b.php habe ich unter anderem ein Javascript:


function test(v){

alert(v);

}

In a.php habe ich die Anweisung

<?php include("b.php") ?>

und

<button onClick="test(1)">

Wenn ich aber den Button anklicke, bekomme ich von der Konsole: "reference error: test is not defined"

Woran liegt das? Wenn ich das Javascript mit der Funktion test() in den Header von Datei a.php schreibe, kommt das Alert und keine Fehlermeldung. Ich dachte, eine mit include eingebundene Datei ist in jeder Hinsicht wie ein Teil der einbindenden Datei. Scheint aber nicht so zu sein.

Bitte um Aufklärung. (Dass es besser wäre, die Funktion in eine externe Datei test.js zu legen, weiß ich).

Danke

Martin

  1. Woran liegt das?

    Am Ergebnis. Welches wir nicht sehen. (HTML-Quelltext der resultierenden Webseite.)

    <?php include("b.php") ?>
    

    GRRRR!

    Hints:

    <?php
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    readfile("b.inc.html");
    ?>
    

    könnte also schon helfen um dem Problem auf die Spur zu kommen.

  2. Hi,

    ich habe eine Datei a.php und eine datei b.php.

    in b.php habe ich unter anderem ein Javascript:

    function test(v){
    alert(v);
    }
    

    dass das zumindest bei diesem einfachen Beispiel besser eine reine Javascript-Datei sein könnte, hast du ja selbst schon erwähnt. Aber davon abgesehen ... okay.

    In a.php habe ich die Anweisung

    <?php include("b.php") ?>
    

    Wo sind die öffnenden und schließenden script-Tags, also <script> und </script>? Irgendwo müssen sie notiert werden, entweder in der eingebundenen Datei (IMO sauberer) oder in der übergeordneten. Andernfalls hast du die Javascript-Funktionsdeklaration als Text mitten im HTML. Dann müsste sie als Klartext im Browser angezeigt werden, ist aber aus Javascript-Sicht nicht vorhanden.

    <button onClick="test(1)">
    

    Wenn ich aber den Button anklicke, bekomme ich von der Konsole: "reference error: test is not defined"

    Woran liegt das?

    Eine mögliche Erklärung habe ich dir genannt. Ob sie wirklich zutrifft, kann ich mangels genauerer Angaben nicht sagen.
    Übrigens ist es allgemein üblich, Element- und Attributnamen konsequent klein zu schreiben, also onclick und nicht onClick.

    Wenn ich das Javascript mit der Funktion test() in den Header von Datei a.php schreibe, kommt das Alert und keine Fehlermeldung.

    Mit den script-Tags?

    Ich dachte, eine mit include eingebundene Datei ist in jeder Hinsicht wie ein Teil der einbindenden Datei. Scheint aber nicht so zu sein.

    Doch, exakt so ist es.

    So long,
     Martin

    --
    Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
    - Douglas Adams, The Hitchhiker's Guide To The Galaxy
    1. Hallo Der Martin,

      Ich dachte, eine mit include eingebundene Datei ist in jeder Hinsicht wie ein Teil der einbindenden Datei. Scheint aber nicht so zu sein.

      Doch, exakt so ist es.

      Vielen Dank, das wollte ich hören. Der Code ist viel zu umfangreich, um ihn hier zu posten, und die relevanten Teile rauszuklauben läuft eh auf eine detaillierte Fehlersuche raus. Natürlich habe ich <script> tags und natürlich machen die php Dateien mehr als nur statischen Text. Also, ich such weiter.

      Danke!

      Martin aus Wien

      1. Danke, es war ganz was anderes: Die Funktion ist innerhalb von

        jQuery(document).ready(function() {
        
        });
        

        gestanden. Das war mir nicht aufgefallen. So verrennt man sich manchmal.

        M a W