Mit PHP UND (!) JavaScript komunizieren
-
Hallo zusammen!
Ich möchte gerne mit PHP einen JavaScript-Code generieren. D.h. ich generiere in PHP z.B. (in JavaScript Syntax) einen Code-Auschnitt und diesen würde ich dann gerne mit 'echten' (also nicht generierten) JavaScript-Funktionen nutzen bzw. ansprechen können.
Geht das überhaupt?Habe folgendes probiert:
<html> <head> <title>test</title> <script language="javascript" type="text/javascript"> <!-- <?php echo "var arr = new array(9);\n"; for($i = 0; $i < 9; ++$i) echo "arr[$i] = $i * 9 + 9;\n"; ?> function foo(index) { if(index >= 0 && index < arr.length) alert(" arr[" + index + "]: " + arr[index]); } //--> </script> </head> <body> <h1>Try to comunicate with PHP AND JavaScript</h1> <form> Element with index <input type="text" name="index" /><br /> <input type="button" onClick="foo(document.forms[0].index.value)" value="Go" /> </form> </body> </html>
Leider funktioniert das so nicht. Es steht zwar der korrekte Quellcode da, aber JavaScript will einfach nicht mit (im Beispiel) der Variabeln arr arbeiten.
Hier zu guter Letzt auch noch der Quellcode, den man zu Gesicht bekommt nachdem der Serverseitige Teil abgelaufen ist. Und genau das verwirrt mich am allermeisten. Der Browser bekommt doch auch keinen anderen Code zu sehen und müsste das doch wie gewünscht anzeigen bzw. ausführen können, oder?
<html> <head> <title>test</title> <script language="JavaScript"> <!-- function SymError() { return true; } window.onerror = SymError; var SymRealWinOpen = window.open; function SymWinOpen(url, name, attributes) { return (new Object()); } window.open = SymWinOpen; //--> </script> <script language="javascript" type="text/javascript"> <!-- var arr = new array(9); arr[0] = 0 * 9 + 9; arr[1] = 1 * 9 + 9; arr[2] = 2 * 9 + 9; arr[3] = 3 * 9 + 9; arr[4] = 4 * 9 + 9; arr[5] = 5 * 9 + 9; arr[6] = 6 * 9 + 9; arr[7] = 7 * 9 + 9; arr[8] = 8 * 9 + 9; function foo(index) { if(index >= 0 && index < arr.length) alert(" arr[" + index + "]: " + arr[index]); } //--> </script> </head> <body> <h1>Try to comunicate with PHP AND JavaScript</h1> <form> Element with index <input type="text" name="index" /><br /> <input type="button" onClick="foo(document.forms[0].index.value)" value="Go" /> </form> </body> </html> <script language="JavaScript"> <!-- var SymRealOnLoad; var SymRealOnUnload; function SymOnUnload() { window.open = SymWinOpen; if(SymRealOnUnload != null) SymRealOnUnload(); } function SymOnLoad() { if(SymRealOnLoad != null) SymRealOnLoad(); window.open = SymRealWinOpen; SymRealOnUnload = window.onunload; window.onunload = SymOnUnload; } SymRealOnLoad = window.onload; window.onload = SymOnLoad; //--> </script>
Ich hoffe nicht, dass das hier (Augrund der Codemenge) als "will-nur-wissen-wie-es-korrekt-läuft;lernen-will-ich-nichts"-Aufruf verstanden wird.
Ich möchte nur, dass ihr euch ein genaues Bild von der 'Lage' machen könnt.Wäre super wenn mir jemand helfen und mich aufklären könnte!
Grüße Caipi
-
Also genau das gleiche Problem war hier vor nen paar tagen schonmal..
Javascript ist Frontend, PHP ist backend. Beide Programmiersprachen haben rein garnichts miteinander zu tun.
Du kannst keine PHP-Variable an Javascript übergeben und anders herum auch nicht..was du tun kannst ist sowas:
echo "<script> var arr = new Array();"; for ($i = 0; $i < count($arr); $i++) { echo " arr[".$i."] = ".$arr[$i].";\n"; }
-
Erstmal muss ich mich entschuldigen, meine Thread-Überschrift ist wahrscheinlich etwas unglücklich gewählt.
Desweiteren, ich weiß, dass JavaScript auf dem Client und PHP auf dem Server ausgeführt wird.
Habe den Fehler jetzt gefunden, mein Denkansatz war der richtige, nur das ich var arr = new array() anstatt var arr = new Array() geschrieben hatte...Bzg. Suche: Ich habe den Thread den du angesprochen hast nicht gefunden.
Bzg. foreach(): Ich glaube die Syntax sieht da ein klein wenig anders ausVielen Dank für deine Mühe.
Caipi
-
ups!
wollte erst nen foreach machen, hab mich dann aber anders entschieden