Veröffentlicht 11. April 201312 j Hi, ich versuche diverse Variablen, welche ich in PHP definiert habe im JavaScript- Teil meiner Seite aufzurufen, aber habe einige Probleme damit. Im Netz bin ich oft darüber gestoßen, man sollte die Variable mit echo übergeben: <script> var meineVariable = "<?php echo $phpVariable; ?>"; </script> Wenn ich es auf diese Weise versuche, wird der ganze Teil in den Anführungszeichen als Text(String) interpretiert. Wenn ich die Anführungszeichen weglasse, bekomme ich in der Console folgende Fehlermeldung: Uncaught SyntaxError: Unexpected token < Ich komme nicht dahinter, warum der Code nicht ausgeführt wird. Danke schonmal für die Tipps. Brixto
11. April 201312 j Hast du dir schonmal aus dem Browser raus den Quellcode angeschaut? Ich denke, dass das PHP nicht geparsed wurde (Dateityp der nicht geparsed wird, Apache läuft nicht, ...).
11. April 201312 j Autor ...Dateityp der nicht geparsed wird, Apache läuft nicht, ... Was meinst du damit? Apache läuft natürlich, und PHP funktioniert auch (ruft ja schließlich das JavaScript auf)
11. April 201312 j Mach im Browser Rechtsklick --> Quellcode anzeigen (ggf. ähnlich in anderen Browsern). Dann siehst du das Problem. Wenn Apache läuft und der PHP-Code geparsed wird (in den Standardeinstellungen wird das zB bei *.html-Dateien nicht gemacht). kann es daran liegen, dass der Parser einen Fehler ausgibt, der mit irgendeinem <tag> eingeleitet wird, daher das nicht erwartete "<".
11. April 201312 j Autor Ich nutze eine *.php- Datei, das PHP sollte eigentlich richtig geparsed werden (wird es auch an anderen Stellen), aber nicht innerhalb eines <script type="text/javascript"> Tags.
11. April 201312 j PHP wirft einen Fehler, den du aber nicht siehst (da in Javascript und nicht im Browser). Dadurch folgt der JS-Fehler. Schau den Quelltext im Browser an bzw. per Firebug o.ä. (wenn du ihn dynamisch nachlädst), dann siehst du, wie der Fehler entsteht.
11. April 201312 j Autor Von PHP kommt kein Fehler, benutze zum Debuggen die PHP Console für den Google Chrome
11. April 201312 j Von PHP kommt kein Fehler, benutze zum Debuggen die PHP Console für den Google Chrome Das erfordert aber Anpassung der PHP Scripte, denn PHP kann nicht im Browser debuggen, das ist technisch nicht möglich, da die Scripte serverseitig durch deren PHP Interpreter, der im Webserver eingebunden ist, aufgerufen werden. Um das, was der OP machen will, durchzuführen braucht man man Server Side Includes die müssen im Webserver korrekt installiert und konfiguriert sein. Hat man das nicht, geht es nicht. Hat man keine SSI, dann generiert man eben den kompletten Seitencode per PHP und gibt ihn via echo aus.
11. April 201312 j Autor Ich habe das ganze jetzt auch nochmal mit dem FireBug getestet, aber das hat mir auch keine Fehler angezeigt. Hier nochmal genau was passiert: Ich rufe in meiner PHP- Datei die Funktion getCal() auf in welcher diese Variable deklariert wird: $usrname = $user->username; als Rückgabe-Wert habe ich einen HTML- Block (Dieser wird beim Aufruf ausgegeben(echo)), welcher auch <script>- Tags enthält. Dort möchte ich die in der Funktion definierten Variablen abrufen und nutze hierzu: var usr= "<?php echo $usrname; ?>"; Wenn ich die Variable ausgebe alert(usr); erhalte ich: <?php echo $usrname; ?>
11. April 201312 j Dann wird der Teil <?php echo $usrname; ?> nicht geparsed. Werden dann auf der gleichen Seite, andere PHP-Scirpte geparsed? Lädst du per Ajax einen Dateityp nach (zB txt), der nicht geparsed wird?
11. April 201312 j Autor Danke für die Antwort. Hat man keine SSI, dann generiert man eben den kompletten Seitencode per PHP und gibt ihn via echo aus. So mache ich das im Moment, aber das funktioniert nicht, wie ich mir das vorstelle. Ich benutze ähnlichen Code schon an anderer Stelle, dort nutze ich auch kein SSI. :confused:
11. April 201312 j Wie wäre es wenn du uns mal die komplette php Datei hier zur Verfügung stellst? Wenn du es in einem kleineren Beispiel zeigen kannst ist es auch OK. Nur das was wir bisher gesehen haben sind immer wieder Ausschnitte von dem was du als Fehler siehst. Eventuell liegt das Problem auch an einer ganz anderen Stelle deines Codes. Was passiert wenn du eine php Datei mit folgendem Inhalt erstellst und dann im Browser anzeigen lässt? <?php //gibt die eine HTML Seite mit sämtlichen PHP infos aus. phpinfo(); ?>[/PHP]
11. April 201312 j Autor Vielen Dank für euere Bemühungen. Ich habe die Lösung gefunden: Dadurch, dass der ganze PHP- Code "generiert" und ausgegeben wurde, konnte das Script den PHP- Code nicht auslesen. So funktioniert es wunderbar: :floet: <?php $usrname = "Max Mustermann"; ?> <html> <script type="text/javascript"> var usr = "<?php echo $usrname; ?>"; alert(usr); </script> </html>[/PHP]
12. April 201312 j Autor Hier nochmal ein Script für die soetwas in Zukunft benötigen, was dieses Verhalten genau aufzeigt: Zwar habe ich noch nicht zu 100% verstanden, warum der PHP code im echo nicht ausgeführt wird, aber so reicht mir das schon, falls trotzdem noch jemand eine Erklärung hierzu hat, würde ich mich freuen! <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <?php echo '<h1 id="name">James</h1>'; $name = "Frank"; $auto = "Opel"; echo '<script> var car = "<?php echo $auto; ?>"; alert("Ich fahre einen " + car); </script>'; ?> <h1 id="alter">21 Jahre</h1> <script> $(document).ready(function(){ var usr = "<?php echo $name; ?>"; alert(usr); $( "#name" ).text("Thomas"); $( "#alter" ).text("33 Jahre"); }); </script>[/PHP]
12. April 201312 j Der PHP Code in deinem echo ist ein String, der ganz normal ausgegeben, also nicht geparsed wird Hättest du den Code gleich am Anfang gepostet, hätten wir dir viel schneller helfen können So würde es klappen: echo '<script> var car = '.$auto.'; alert("Ich fahre einen " + car); </script>'; [/PHP]
12. April 201312 j Autor Der PHP Code in deinem echo ist ein String, der ganz normal ausgegeben, also nicht geparsed wird Hättest du den Code gleich am Anfang gepostet, hätten wir dir viel schneller helfen können Vielen Dank für die Antwort, funktioniert wunderbar mit Strings! Den Code habe ich erst heute morgen zum besseren Verständnis geschrieben Dieser Code kann aber nur String- Variablen auflösen, richtig? Gibt es das auch für Arrays? Normalerweise würde ich ein Php-Array mit var userarray = <?php echo json_encode($arr); ?>; in ein JS- Array wandeln, aber dies funktioniert ja so nun auch nicht. Und wie ist hierbei "Best- Practice"? Sollte ich den HTML- Code direkt in der PHP- Datei schreiben, oder mit echo ausgeben lassen? Danke schonmal
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.