Brixto Geschrieben 11. April 2013 Geschrieben 11. April 2013 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 Zitieren
pr0gg3r Geschrieben 11. April 2013 Geschrieben 11. April 2013 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, ...). Zitieren
Brixto Geschrieben 11. April 2013 Autor Geschrieben 11. April 2013 ...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) Zitieren
pr0gg3r Geschrieben 11. April 2013 Geschrieben 11. April 2013 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 "<". Zitieren
Brixto Geschrieben 11. April 2013 Autor Geschrieben 11. April 2013 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. Zitieren
pr0gg3r Geschrieben 11. April 2013 Geschrieben 11. April 2013 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. Zitieren
Brixto Geschrieben 11. April 2013 Autor Geschrieben 11. April 2013 Von PHP kommt kein Fehler, benutze zum Debuggen die PHP Console für den Google Chrome Zitieren
flashpixx Geschrieben 11. April 2013 Geschrieben 11. April 2013 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. Zitieren
Brixto Geschrieben 11. April 2013 Autor Geschrieben 11. April 2013 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; ?> Zitieren
pr0gg3r Geschrieben 11. April 2013 Geschrieben 11. April 2013 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? Zitieren
flashpixx Geschrieben 11. April 2013 Geschrieben 11. April 2013 @Brixto: siehe mein Post bezüglich SSI Zitieren
Brixto Geschrieben 11. April 2013 Autor Geschrieben 11. April 2013 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: Zitieren
Schiller256 Geschrieben 11. April 2013 Geschrieben 11. April 2013 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] Zitieren
Brixto Geschrieben 11. April 2013 Autor Geschrieben 11. April 2013 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] Zitieren
Brixto Geschrieben 12. April 2013 Autor Geschrieben 12. April 2013 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] Zitieren
sas86ks Geschrieben 12. April 2013 Geschrieben 12. April 2013 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] Zitieren
Brixto Geschrieben 12. April 2013 Autor Geschrieben 12. April 2013 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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.