PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : php-Variable an JavaScript übergeben


Jetarel
17.02.2009, 20:49:24
Hallo!

Also, da ich neu bei euch im Forum bin, will ich zunächst mal ein recht herzliches Hallo loswerden.

Jetzt können wir auch schon zu meinem (kleinen) Problem kommen:
Es geht mal wieder um die Übergabe einer Variable von php an JavaScript.
Ja ja... bitte nicht gleich schlagen.
Ich habe schon alle möglichen Quellen bei Google durchforstet und war auch gerade bei euch im Forum über die Suche nach "variablen übergeben" vergebens unterwegs.

Die Theorie mit "var variable = "<?php echo $variable; ?>";" klappt ja i.A., nur in meinem Fall kam ich damit nicht zu Erfolg. Also habe ich überlegt, die benötigten Daten einfach als Parameter an eine Funktion zu übergeben. Das ist meinem Vorhaben auch viel zuträglicher, da ich dort auch auf eine JavaScript-Funktion zugreife.

Nun, hier zunächst mal mein Testcode:
(Alles was auskommentiert ist, sind (waren) Versuche
mit der alt hergebrachten Methode Erfolg zu haben.)

<html>
<head>

<script type="text/javascript">
function Wassup(variable)
//function Wassup()
{
//var variable ="<?php echo $variable ?>";
alert (variable);
}
</script>

<title>Variable</title>
</head>
<body>

<?php
$variable = "111";
echo "$variable<br>";
echo('<script type="text/javascript">Wassup('.$variable.');</script>');
//echo('<script type="text/javascript">Wassup();</script>');
?>

</body>
</html>

[Anm.: irgendwie will es mir nicht gelingen, das durchnummerierte und farbig hervorgehobene Script einzufügen...deshalb nur Code]

Zur Erklärung:
Es soll die Variable $variable (*cleverich*) an die Funktion Wassup(variable) übergeben werden. In dem oben gezeigten Script klappt das auch. Sobald ich $variable allerdings mit etwas anderem als Zahlen füttere (also z.B. Text) geht nichts mehr.
Bsp.: $variable = "Superman"; => Line:17, Error: 'Superman' is undefined!
Ich raff's nicht.

Bitte sagt mir ich habe wiedermal irgendwo ein ';' oder auch ";" vergessen... ;)
Ja: Ich komme aus der Visual Basic Ecke!

Danke euch schon mal in Voraus!
Gruß Jetta

cortex
17.02.2009, 20:58:04
willkommen im forum,

Line:17, Error: 'Superman' is undefined!


die fehlermeldung kommt vom js-skript ?

cx

Jetarel
17.02.2009, 21:33:53
Wie bekomme ich das raus, ob die Fehlermeldung vom Java-Skript kommt?
Das ist einfach eine Fehlermeldung. Ich hänge mal ein Bild an:

urvater
18.02.2009, 00:13:30
Deine Grafik zeigt dir, daß es sich um Javascript handelt.
Bei PHP hättest du den Fehler in der Datei ausgegeben bekommen. Ähnlich einem Echo.

cortex
18.02.2009, 09:58:23
das problem liegt auf jeden fall beim js-skript. musste mal den code zeigen, dass dir einer (der wenigen :-) js-profis hier weiterhelfen können.

cx

Jetarel
18.02.2009, 11:38:39
Der JavaScript Code ist ja schon Teil des bereits gezeigten Codes und besteht eben nur aus effektiv zwei Befehlen (function und alert). Mehr ist da einfach nicht dran. Und vom Syntax passt das soweit.
Soll ich jetzt besser nochmal in einem Java-Forum posten???

Grüße Jetta

cortex
18.02.2009, 11:51:37
oh sorry... hatte die funktion übersehen und überhaupt - sehe gerade erst, was du da zusammengebastelt hast.

vorweg: javascript != java.

php läuft serverseitg, js beim client. du kannst also per js keine variable an php übergeben; es sei denn durch einen erneuten request; ggfs. per ajax.

das ganze kann so also nicht funktionieren.

cx

ps. möglicherweise sehe ich nicht den punkt, auf den du hinaus willst...

cx

Jetarel
18.02.2009, 13:45:42
Mein Punkt ist mehr oder weniger, dass es so ja schon funktioniert...Aber eben nur, wenn $variable ein Integer bzw. Float ist. Sollte $variable allerdings ein String sein, geht es nicht mehr. Das ist mein Problem, denn es müsste teilweise ein String sein. Und generell fehlt mir das Verständnis, wieso es einmal geht und dann wieder nicht.
Das php serverseitig läuft ist mir in dem Sinne schon klar und auch in meinem Sinne... Der Server übersetzt doch php in html und schickt es an den Browser, oder so ähnlich. Der wiederum merkt jetzt, das ein Teil des Codes JavaScript ist, schmeist sein Java-Plugin an und für dann die entsprechende Funktion aus.
Ok, wenn ich das so schreibe fällt mir ein: Kann es sein, dass wenn der Server mit dem php durch ist, dass dann gar keine Variablen mehr existieren, die an den Browser geschickt werden??? Wenn ja, wieso geht es dann mit Integern...?

Jetarel
18.02.2009, 14:10:07
!!!!LÖSUNG!!!!

Verdammt bin ich dämlich... aber manchmal braucht es jemanden, der den Stein ins Rollen bringt. Hier jetzt der Funktionierende Quelltext für das Beispiel:

<html>
<head>

<script type="text/javascript">
function Wassup(variable)
//function Wassup()
{
//var variable ="<?php echo $variable ?>";
alert (variable);
}
</script>

<title>Variable</title>
</head>
<body>

<?php
$variable = "Superman";
echo "$variable<br>";
//echo('<script type="text/javascript">Wassup('.$variable.');</script>');
?>

<script language="javascript">
var variable = "<?php echo $variable; ?>";
Wassup(variable)
</script>

</body>
</html>

[Anm.: Wie geht das jetzt mit dem farbig machen???]

[mod: so .-]

Man muss eigentlich nur die Variable (nach dem überall beschriebenen Muster) VOR dem Aufruf der Funktion an JavaScript übergeben. Ganz einfach! $variable muss dann auch nicht mehr als Parameter übergeben werden, da er ja bereits in JavaScript bekannt gemacht wurde (in o.a. Bsp. wird er noch per Parameter übergeben).

Ach ja... die besten Lösungen sind immer noch die, die einem nach tagelangen Suchen und Probieren plötzlich auf der Toilette einfallen. ;)

Danke für eure Hilfe!!! Ich stoße demnächst bestimmt mal wieder auf Granit and then: I'll be back!

Thanks Jetta

cortex
18.02.2009, 14:17:50
Der Server übersetzt doch php in html und schickt es an den Browser, oder so ähnlich.

der server kann alles mögliche ausgeben - HTML ist eine möglichkeit.

das ein Teil des Codes JavaScript ist, schmeist sein Java-Plugin an und für dann die entsprechende Funktion aus.

nochmal: JAVASCRIPT IST NICHT GLEICH JAVA. js wird von der js-engine des browsers ausgeführt; java wird - wie von dir angedeutet - per plugin erledigt.

Kann es sein, dass wenn der Server mit dem php durch ist, dass dann gar keine Variablen mehr existieren, die an den Browser geschickt werden???

richtig - http ist stateless - nach einem response hat der server alles "vergessen".

Wenn ja, wieso geht es dann mit Integern...?

das ist die preisfrage. evtl. ein zufall...? evtl. eine frage der variablen-definition? bei js wird das "irgendwie" unterschieden - schau dir das selbst mal an:

http://de.selfhtml.org/javascript/sprache/variablen.htm

ich kann dir an dieser stelle leider nicht weiterhelfen - bei javascript lehne ich mich ungern aus dem fenster.

cx

cortex
18.02.2009, 16:36:59
!!!!LÖSUNG!!!!

prima .-p

cx

urvater
18.02.2009, 19:03:46
Da mir deine Lösung nicht eindeutig genug war, hab ich mich auch mal damit beschäftigt. Grund, weshalb es nicht funktioniert hat, waren die fehlenden " beim Aufruf der JS-Funktion.<?php
$variable = "Supermann";
?>
<html>
<head>
<script type="text/javascript">

function Wassup(variable)
{
alert (variable);
}
</script>
<title>Variable</title>
</head>
<body>
<script type="text/javascript">
Wassup("<?php echo $variable; ?>");
</script>

</body>
</html>

urvater
18.02.2009, 19:09:28
alternative Schreibweise, falls du die Variablen anders benötigst.<?php
$variable = "Supermann";
?>
<html>
<head>
<script type="text/javascript">

function Wassup()
{
var variable = "<?php echo $variable; ?>";
alert (variable);
}
</script>
<title>Variable</title>
</head>
<body>
<script type="text/javascript">
Wassup();
</script>

</body>
</html>