mit php => javascript ausgeben

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von gardenexpie, 04.01.2007.

  1. gardenexpie

    gardenexpie Thread Starter MacUser Mitglied

    Beiträge:
    144
    Zustimmungen:
    0
    MacUser seit:
    10.12.2003
    hallo zusammen,

    möchte folgendes mit php ausgeben, aber es geht nicht. das script funktioniert aber wenn ich es in einer reinen html-seite hab.

    <?php
    echo "<script type=\"text/javascript\" language=\"JavaScript\">
    js_var FO = { movie:\"flvplayer.swf\",width:\"320\",height:\"240\",majorversion:\"7\",build:\"0\",
    flashvars:\"file=video.flv&showdigits=false&showicons=false&autostart=true&showfsbutton=true&repeat=true\" };
    UFO.create( FO, \"player1\");
    </script>
    ";
    ?>


    kann mir jemand weiterhelfen?

    gruß;-)
     
  2. Fabien

    Fabien MacUser Mitglied

    Beiträge:
    233
    Zustimmungen:
    11
    MacUser seit:
    23.12.2003
    Wird vielleicht alles zu einem langen Wurm zusammengehängt und Zeilenanfang sowie -ende jeweils ohne Leerzeichen direkt verbunden?

    Ansonsten schau halt mal den generierten HTML-Code an. Wüsste nicht, warum der Fehler dort nicht zu erkennen sein soll. Der Browser merkt ja nicht ob das HTML von einer Seite kommt oder vom Server generiert wurde.
     
  3. scope

    scope MacUser Mitglied

    Beiträge:
    4.081
    Zustimmungen:
    301
    MacUser seit:
    24.01.2005
    Definiere "geht nicht"
    Was gibt die Fehler-Konsole denn aus?
     
  4. gardenexpie

    gardenexpie Thread Starter MacUser Mitglied

    Beiträge:
    144
    Zustimmungen:
    0
    MacUser seit:
    10.12.2003
    denke es liegt an den gescheiften klammern und semikolen. leider hab ich keine ahnung, wie ich es so hinbekomme das es funktioniert.
     
  5. 2nd

    2nd MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    MacUser seit:
    25.07.2004
    Mal eine andere Frage: Warum willst Du überhaupt HTML- und JS-Code per PHP Interpreter ausgeben? Ist langsam (Interpreter muss rechnen) und fehleranfällig (Zeilenumbüche im JS), unübersichtlich (Ausmaskieren von " oder ' und Einschliessen von Strings) und geht viel eleganter ohne.

    Das funktioniert z. B. so:

    PHP:

    <?
       if ( ($nameError) { ?>
          <p class="error">Eingabefehler - bitte korrigieren Sie die markierten Felder!</p>
       <? } ?>

    Oder so:

    PHP:

    <?
       if ( ($nameError) : ?>
          <p class="error">Eingabefehler - bitte korrigieren Sie die markierten Felder!</p>
       <? endif; ?>

    Sprich, Du kannst Logik (PHP) mit Markup/JS (HTML) mischen. Funktioniert z. B. auch mit Schleifen und allen anderen netten PHP Dingen.

    Oder so z. B.:

    PHP:
    <input name="inputSubject" type="text" value="<?=$phpVariable ?><?=phpFunktion($argument?> />
    So wie in Deinem Bsp. macht es erstmal keinen Sinn, da Du dafür kein PHP brauchst.

    2nd
     
  6. goddess

    goddess MacUser Mitglied

    Beiträge:
    229
    Zustimmungen:
    10
    MacUser seit:
    26.02.2006
    Wenn der String welcher der Funktion print bzw. echo übergeben wird nicht geparst werden soll, dann verwende statt " ein ' zum begrenzen. Damit ersparst du dir auch das Escapen der " im Javascript.

    Übrigens wäre eine Fehlermeldung von Seiten Javascript auch recht hilfreich ;)
     
  7. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.042
    Zustimmungen:
    1.317
    MacUser seit:
    13.09.2004
    Das Escapen von Quotes geht nur bis zu einem gewissen Bereich gut! Daher empfiehlt es sich bei PHP, vor allem wenn man Template-Bereiche aus Variablen per PHP generiert, eigene externe JS-Dateien anzulegen.
    Klar kann man Quotes mit "\" escapen, ab einem gewissen Punkt ist der Code aber unlesbar/unwartbar.
     
  8. marcryser

    marcryser MacUser Mitglied

    Beiträge:
    2
    Zustimmungen:
    0
    MacUser seit:
    09.09.2006
    Es sit in der Tat so, dass das Problem bei den Gänsefüsschen, oder Quotes liegt. Ich habe da mal eine vielleicht etwas umständliche Lösung angewandt, die aber Funktioniert. Und zwar geht das folgendermassen:
    Alles, was zwischen Quotes kommt, wird richtig in Variabeln verpackt. Und das sieht dann etwa so aus:

    <?php
    $type = "\"text/javascript\"";
    $language = "\"JavaScript\"";
    echo "<script type=$type language=$language>

    Danach notierst du anstelle des Textes einfach die Variablen ;-) gibt viel zu tun, aber funktioniert wenigstens.
     
  9. 2nd

    2nd MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    MacUser seit:
    25.07.2004
    Ich verstehe immer noch nicht, warum man so umständlich vorgeht und HTML/JS - Ausgaben unbedingt via PHP-Funktion an den Browser schickt.

    Das obige Bsp. würde ich auch anders machen, z. B. so:

    PHP:
    <?
       
    $type "text/javascript";
       
    $language "JavaScript";
    ?>

    <script type="<?=$type?>" language="<?=$language?>">
    Der HTML/JS/PHP MischMasch ist (wie Wegus schon sagte) ja nicht pflegbar...

    2nd
     
Die Seite wird geladen...