WernerK: PHP Code in JS Datei?

Hallo,

ich hätte die Anforderung PHP Code in einer Javascript JS Datei hinzuzufügen.
Wäre es gültig und ok, wenn man die JS Datei in Endung php umbenennt?

<script type="text/javascript" src="/js/meine.js.php"></script>

Oder gibt es bessere Möglichkeiten?

Gruss
Werner

  1. @@WernerK:

    nuqneH

    ich hätte die Anforderung PHP Code in einer Javascript JS Datei hinzuzufügen.

    Das hört sich seltsam an. Wie ich es beim 2. Lesen verstehe: Du willst JavaScript-Code mit PHP generieren.

    Wäre es gültig und ok, wenn man die JS Datei in Endung php umbenennt?
    <script type="text/javascript" src="/js/meine.js.php"></script>

    Ja, warum nicht? Du solltest nur mit header() dafür sorgen, dass die Ressource mit dem richtigen Medientypen rausgeht.

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. Hallo Gunnar,

      Das hört sich seltsam an. Wie ich es beim 2. Lesen verstehe: Du willst JavaScript-Code mit PHP generieren.

      Ja und nein. Ich habe eine JS Funktion in der ich ein <select> Element mit Values von einer DB befülle. Bisher hatte ich halt diese JS Funktion in einer anderen PHP Datei drin.
      Ich würde sie aber gerne auslagern in die allgemeine JS Datei.

      function myjsFunctiona ()
       {

      var begin = '<select name="nedit">';
       <?php
        $list = List();
        $values = "";
        foreach($list as $a){
        $values.= "<option value="{$a['id']}">{$a['text']}</option>";
        }
        ?>
      ....

      Gruss
      Werner

      1. Lieber WernerK,

        Du vergisst vielleicht, dass eine *.php-Datei von PHP bearbeitet als "text/html" an den Browser geht, weil das bei PHP die Voreinstellung ist. Nur weil Deine Datei auf *.js.php endet, ist das für PHP noch kein Grund, jetzt "text/javascript" als Content-Type zu senden. Damit aber der Browser den Textinhalt nicht als HTML, sondern als JavaScript akzeptiert (eine Fehlerseite ist z.B. vom Content-Type "text/html"), braucht es einen passenden HTTP-Header, daher Gunnars Verweis auf die header()-Funktion in PHP.

        Liebe Grüße,

        Felix Riesterer.

        --
        "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
  2. Moin,

    Oder gibt es bessere Möglichkeiten?

    Besser als was? Wenn Du verschiedenen Möglichkeiten vergleichen möchtest, definiere zunächst ein Ziel, also das, was Du erreichen möchtest. Dann stelle verschiedene Möglichkeiten zur Disposition, z.B.:

    1. die Seite mit dem <select> wird als Template ausgegeben und die Options über einen Platzhalter-Array befüllt
    2. ein JS-Objekt wird per Template über Platzhalter befüllt und das <select> über den Umweg JS mit den Daten aus dem Objekt heraus befüllt

    Bei (2) gäbe es die Möglichkeit das JS-Objekt (JSON) in eine externe Datei auszulagern und mit dem <script>-tag einzubinden.

    Abstrakt: Definiere eine Schnittstelle, wie Deine Daten von der DB über PHP entweder direkt in die auszugebende Seite kommen oder über den Umweg JavaScript und umgekehrt zurück zum Server.

    Eine direkte Zuweisung PHP-Array <=> JS-Objekt:

    <?php
      $list = List();

    ist nicht möglich, wohl aber das Definieren von Schnittstellen, die eine Haltung gleichartiger Datenstrukturen (Array) sowohl server- wie auch clientseitig (JS-Objekt) ermöglichen. Auf meinen Seiten findest Du Beispiele hierzu und auch Beispiele, wie eine solche Datenabstraktion den Transport per Ajax transparent macht.

    MfG

    --
    Ist doch immer wieder alles dieselbe Scheiße (fei übersetzt nach Ben Akiba).
    1. Hi there,

      Moin,

      Oder gibt es bessere Möglichkeiten?

      Besser als was? Wenn Du verschiedenen Möglichkeiten vergleichen möchtest, definiere zunächst ein Ziel, also das, was Du erreichen möchtest. Dann stelle verschiedene Möglichkeiten zur Disposition, z.B.:

      1. die Seite mit dem <select> wird als Template ausgegeben und die Options über einen Platzhalter-Array befüllt
      2. ein JS-Objekt wird per Template über Platzhalter befüllt und das <select> über den Umweg JS mit den Daten aus dem Objekt heraus befüllt

      Bei (2) gäbe es die Möglichkeit das JS-Objekt (JSON) in eine externe Datei auszulagern und mit dem <script>-tag einzubinden.

      Wenn man von München nach Hamburg will, kann man das auch über Neuseeland machen. Ich nenne solche Dateien einfach xxxxx.js.php und ruf' sie ganz normal mit <script src=... auf

      Abstrakt: Definiere eine Schnittstelle, wie Deine Daten von der DB über PHP entweder direkt in die auszugebende Seite kommen oder über den Umweg JavaScript und umgekehrt zurück zum Server.

      in der Zwischenzeit ist vermutlich der Rechner schon veraltet, auf dem das laufen soll...