Ankündigung

Einklappen
Keine Ankündigung bisher.

php variable/Javascript expected expression, got '<'

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php variable/Javascript expected expression, got '<'

    Hallo,
    ich bekomme den folgenden Fehler

    Code:
    SyntaxError: expected expression, got '<'
    	
    var week 		= <?php echo json_encode($week); ?>;
    dabei sieht es in meinem Script so aus

    Code:
    var week 		  = <?php echo json_encode($week); ?>;
    var typeId 	          = <?php echo json_encode($typeId); ?>;
    
    //var week 		  = 	<?php echo $week; ?>;
    //var typeId 	= 	<?php echo $typeId; ?>;
    Das Komische ist, das Script funktionierte schon (ich habe nur die Seite umgebaut und seit dem bekomme ich diesen Fehler)

    Ich habe eine php-Seite in der ich via
    Code:
    echo '<script type="text/javascript" src="js/sliderscript.js" charset="utf-8"></script>';
    das javascript einbinde.

    in dem Javascript wird jQuery Framework verwendet

    jQuery wird zuvor geladen.

    Was ist daran falsch?

    Grüße Jürgen


  • #2
    Hallo
    hat sich erledigt.

    komisch... ich include es jetzt mit include ('scrptname.js');
    und habe ins script
    <script>
    </script eingefügt und jetzt geht es... seltsam

    Kommentar


    • #3
      dabei sieht es in meinem Script so aus
      Ist es ein JavaScript-Script oder ein PHP-Script?
      Sollte es ein JavaScript-Script sein, läge der Fehler wahrscheinlich darin, dass Du in einer JS-Datei versuchst, PHP auszuführen.

      Sollte es eine PHP-Datei sein, haben wohl wirklich nur die entsprechenden <script></script>-Tags gefehlt.

      Code:
      <script src="js/sliderscript.js"></script>
      ... reicht übrigens mittlerweile zum Einbinden eines Moduls, die Compiler wissen Bescheid.

      Viele Grüße,

      Lightshade

      Kommentar


      • #4
        Hallo,

        es ist ein Javascript was in eine php-Seite eingebunden wird.
        Dem Javascript müssen dann 2 PHp-Variablen übergeben werden, deswegen nutze ich in dem Javascript die beiden Zeilen

        Code:
        var week 		  = <?php echo json_encode($week); ?>;
        var typeId 	          = <?php echo json_encode($typeId); ?>;
        ist das falsch?
        wenn ja wie soll ich dann dem Javascript diese Variablen übergeben?

        Grüße Jürgen

        Kommentar


        • #5
          Wenn das JavaScript wie in post #3 eingebunden wurde, läuft da natürlich kein PHP Interpreter drüber …

          Kommentar


          • #6
            Liegt wahrscheinlich daran, dass die spitze Klammer am Anfang des <?php>-Tags von JavaScript interpretiert wird. Es sollte klappen, wenn Du Hochkommata um den PHP-Teil machst. Klappt bei mir so.

            PHP-Code:
            <script>
                var week = '<?php echo json_encode($week); ?>';
                document.write(week);
            </script>
            Viele Grüße.

            Kommentar


            • #7
              Hallöchen,

              Zitat von Lightshade Beitrag anzeigen
              Liegt wahrscheinlich daran, dass die spitze Klammer am Anfang des <?php>-Tags von JavaScript interpretiert wird. Es sollte klappen, wenn Du Hochkommata um den PHP-Teil machst. Klappt bei mir so.
              Nein, denn a) ist das nicht notwendig, weil die Ausgabe von json_encode direkt einer Variablen zugewiesen werden kann* und b) ändert das nichts daran, dass der PHP-Code (höchst wahrscheinlich) gar nicht interpretiert wurde.

              * Mal abgesehen davon, dass PHP-Code immer serverseitig, also unabhängig von JavaScript, ausgeführt wird.

              Zitat von Lightshade Beitrag anzeigen
              PHP-Code:
              <script>
                  var week = '<?php echo json_encode($week); ?>';
                  document.write(week);
              </script>
              Und wenn $week nun eine Zeichenkette ist, steht in deinem String "Hello" (Anführungszeichen mit inbegriffen) statt Hello. Tolle Wurst.

              Fazit: der Code von selfmade01 ist prinzipiell korrekt, nur wird er scheinbar nicht durch den PHP-Interpreter gejagt.

              Viele Grüße,
              lotti

              Kommentar


              • #8
                Hallo,

                genau das war auch das Problem als ich es mit json_encode($week) probierte.
                in $week stand nur eine Zahl und ich bekam dann "7" incl. Anführungszeichen.

                Das ganze Problem lag aber auch nicht daran.
                Zuvor hatte ja das Script einwandfrei funktioniert nur als ich die gesamte Seite umgebaut habe und ein anderes CSS-Template nutzte (ist ein Admin Template für Bootstrap) klappte es nicht mehr.

                Ich fügte das script einmal mit
                Code:
                echo '<script type="text/javascript" src="js/sliderscript.js" charset="utf-8"></script>';
                ein... funktionierte nicht

                irgendwann probierte ich unter php das
                Code:
                include ('../js/sliderscript.js');
                und fügte dem Javascript

                <script>
                </script>

                hinzu...

                dann funktionierte es...

                wieso , weiss ich nicht

                Grüße Jürgen

                ps. an der augenscheinlichen Pfad-Angabe lag es nicht, dass hatte ich als erstes geprüft.

                Ich gehe davon aus, dass es u.U. die Reihenfolge war in der ich die benötigten Javascript-Dateien einfügte

                Kommentar


                • #9
                  Hallöchen,

                  Zitat von selfmade01 Beitrag anzeigen
                  genau das war auch das Problem als ich es mit json_encode($week) probierte.
                  in $week stand nur eine Zahl und ich bekam dann "7" incl. Anführungszeichen.
                  Wenn in $week ein Wert vom Typ integer steckt, wird dieser von json_encode auch ohne Anführungszeichen ausgegeben:

                  PHP-Code:
                  <?php

                  echo json_encode(5);
                  # Ausgabe: 5

                  echo json_encode((int)'5');
                  # Ausgabe: 5

                  echo json_encode('5');
                  # Ausgabe: "5"
                  Zitat von selfmade01 Beitrag anzeigen
                  Zuvor hatte ja das Script einwandfrei funktioniert
                  Offensichtlich mangelt es dem Script an Qualität.

                  Zitat von selfmade01 Beitrag anzeigen
                  Ich fügte das script einmal mit
                  Code:
                  echo '<script type="text/javascript" src="js/sliderscript.js" charset="utf-8"></script>';
                  ein... funktionierte nicht
                  Ist ja auch logisch. Diese Ausgabe wird 1:1 an den Browser übergeben. Der Browser erhält also die Information, dass er sich die JavaScript-Datei sliderscript.js über ein weiteres Request vom Server laden soll. Diese läuft in einer gewöhnlichen Webserver-Konfiguration nicht durch den PHP-Interpreter sondern wird im Klartext ausgeliefert. Führe dir bitte vor Augen wann die Abarbeitung von PHP und HTML / JavaScript stattfindet.

                  Zitat von selfmade01 Beitrag anzeigen
                  irgendwann probierte ich unter php das
                  Code:
                  include ('../js/sliderscript.js');
                  und fügte dem Javascript

                  <script>
                  </script>

                  hinzu...

                  dann funktionierte es...
                  Na klar funktioniert das. Dein JavaScript beinhaltet PHP-Code. Da du es im PHP-Kontext inkludierst, wird der darin enthaltene PHP-Code auch interpretiert und umgesetzt.

                  Nochmal: führe dir bitte vor Augen wann PHP-Code ausgeführt wird. Wenn dein Browser die Datei sliderscript.js anfordert, wird diese vom Webserver im Klartext ausgeliefert - PHP kommt also gar nicht zum Einsatz.

                  Viele Grüße,
                  lotti

                  Kommentar


                  • #10
                    Hallo Lotti,

                    vielen Dank für die Ausführung.

                    Irgendwo habe ich einen gravierenden Denkfehler.
                    Wäre Dir dankbar mir ein wenig Licht ins Dunkle zu bringen.

                    Folgendes dachte ich:
                    Wenn der Browser eine Seite aufruft die einen PHP-Code enthält so wird doch der PHP-Code auf dem Server schon geladen
                    Wenn ich also dort ein Script im reinen HTML-Code
                    mit
                    Code:
                    ?>
                    <script type="text/javascript" src="js/sliderscript.js" charset="utf-8"></script>
                    
                    <?php
                    einbinde, so dachte ich das dies eigentlich das Gleiche sein müsste als wenn ich im PHP-Code
                    PHP-Code:
                    echo '<script type="text/javascript" src="js/sliderscript.js" charset="utf-8"></script>'
                    schreibe (wenn ich echo '<tr><td> irgendwas </td></tr>'; schreibe dann wird dies doch auch beim client richtig interpretiert... wieso dann die script-Anweisung nicht?)
                    auch das Gleiche sein müsste als wenn ich

                    PHP-Code:
                    include ('../js/sliderscript.js'); 
                    sliderscript.js
                    Code:
                    <script>
                    ... Javascriptcode
                    </script>
                    schreibe.

                    Das Javascript dann rein beim Client ausgeführt wird, ist mir klar, aber ich dachte wenn ich es zuvor Serverseitig lade sollte alles schon rechtzeitig beim Client sein.

                    Irgendwo habe ich da wohl ein gravierendes Verständnisproblem

                    Siehst Du wo?

                    Grüße Jürgen

                    Ps. das würde bedeuten das ich Script-Anweisungen nie in einem php-Code packen darf bzw. diese durch PHP aufrufen lassen darf

                    Kommentar


                    • #11
                      Hallöchen,

                      Zitat von selfmade01 Beitrag anzeigen
                      Irgendwo habe ich da wohl ein gravierendes Verständnisproblem

                      Siehst Du wo?
                      Ja. Du gehst pauschal davon aus, dass der Server sich wie aus Zauberhand um deinen PHP-Code kümmert. Das stimmt aber nicht. Du musst den Webserver gezielt auf jene Dateitypen ansetzen, die er durch den PHP-Interpreter jagen soll (konkret geschieht das in der Webserver-Konfiguration). In einer gewöhnlichen Konfiguration, wie sie bspw. XAMPP liefert, werden nur .php durch den Interpreter gejagt. Häng doch einfach mal ein .php an deine JavaScript-Datei (also sliderscript.js.php) und schau was bei der ersten Variante passiert. Vermutlich wirst du einen Fehler erhalten, weil das Script in einem neuen Request-Kontext ausgeführt wird, aber der PHP-Code sollte zumindest mal interpretiert werden.

                      Das ist natürlich nicht die optimalste Lösung. Im Idealfall lieferst du diese Werte direkt mit dem HTML-Dokument aus. Quasi so:

                      PHP-Code:
                      <html>
                          <head>...</head>
                          <body>
                              ...
                              <script>
                                  this.data = <?= json_encode($data); ?>
                              </script>
                          </body>
                      </html>
                      Zitat von selfmade01 Beitrag anzeigen
                      Ps. das würde bedeuten das ich Script-Anweisungen nie in einem php-Code packen darf bzw. diese durch PHP aufrufen lassen darf
                      Ich bin mir nicht sicher ob ich verstehe was du damit sagen willst. Wichtig ist dass du verstehst wann und in welchem Kontext deine PHP-Scripts ausgeführt werden und wie das Zusammenspiel zwischen Server und Client (Browser) funktioniert.

                      Viele Grüße,
                      lotti

                      Kommentar


                      • #12
                        Hallo,

                        nochmals vielen dank für deine Erklärung.

                        ich muss mir das wohl nun mal ganz genau ansehen und mehr austesten damit ich es anhand von praktischen beispielen verstehe.
                        Dann begreife ich es wohl eher

                        Viele Grüße
                        Jürgen

                        Kommentar

                        Lädt...
                        X