Zum Inhalt springen

Php- Variablen an JavaScript übergeben


Empfohlene Beiträge

Geschrieben

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

Geschrieben
...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)

Geschrieben

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 "<".

Geschrieben

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.

Geschrieben

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.

Geschrieben
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.

Geschrieben

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; ?>

Geschrieben

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?

Geschrieben

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:

Geschrieben

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]

Geschrieben

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]

Geschrieben

Hier nochmal ein Script für die soetwas in Zukunft benötigen, was dieses Verhalten genau aufzeigt: :D

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]

Geschrieben

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]

Geschrieben
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 :D

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 :)

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...