Arrayübergabe von PHP->Javascript
Christian Feldbacher
- javascript
Hallo!
Ich hab da (wiedermal) ein kleines Problem.
Und zwar wollte ich ein Array von PHP nach Javascript übergeben, und dachte mir das geht genauso wie die Variablenübergabe... (oder geht es ja doch genauso nur ich hab mich vertan...)
also, code sieht folgendermaßen aus:
<?
...for($i=0;$i<$anzahl;$i++)
$jahrs[$i]=$start[$i][0].$start[$i][1].$start[$i][2].$start[$i][3];
...
?>
<script language="JavaScript">
...
var wert = <?php echo $jahrs; ?>;
...
</script>
wenn ich dann versuche wert auszugeben, gibt er mir als antwort "undefined"
document.write(wert[0]);
danke schon im voraus
Ich hab da (wiedermal) ein kleines Problem.
Und zwar wollte ich ein Array von PHP nach Javascript übergeben, und dachte mir das geht genauso wie die Variablenübergabe... (oder geht es ja doch genauso nur ich hab mich vertan...)
also, code sieht folgendermaßen aus:
<script language="JavaScript">
...
var wert = <?php echo $jahrs; ?>;
...
</script>
Lass Dir vom Browser mal den Quellcode dieser Seiter anzeigen. Das obige Stück müsste dort ungefähr folgendermaßen aussehen:
<script language="JavaScript">
...
var wert = Array;
...
</script>
Wenn Du ein Feld in PHP mit "echo $feld;" auszugeben versuchst, wird das natürlich nix, weil echo für Texte gedacht ist, nicht für Felder. Wenn überhaupt, dann kommen für sowas Funktionen wie print_r() oder vardump() in Betracht. Aber auch die liefern keine Ausgabe, die sich programmiertechnisch vernünftig weiterverarbeiten lässt.
Die Übergabe von Daten (nicht Variablen!) von PHP an Javascript kann grundsätzlich nur so geschehen, daß man per PHP Javascript-Code zusammen mit den Werten ausgibt. Ansatzweise hast Du das ja schon gemacht, eine Felddefinition in Javascript funktioniert aber etwas anders (siehe http://selfhtml.teamone.de/javascript/objekte/array.htm#allgemeines):
Objektname = new Array(Element0, Element1, ..., element_n);
Dein PHP-Code muß genau so eine Anweisung ausgeben. Also:
<script type="text/javascript">
...
var wert = new Array(
<?php
$did=false;
while (list($wert)=each($phpfeld))
{
if ($did) echo ","; // Schon was ausgegeben? Ja: Komma setzen.
echo ""$wert""; // $wert eventuell ohne Anführungszeichen,
// je nach Inhalt (Zahl oder Text)
$did=true; // Wert ausgegeben, beim nächsten Durchlauf
// Komma setzen.
};
?>;
...
</script>
Damit bekommst Du dann in den HTML-Daten exakt obige Javascript-Beispielzeile.
Gruß,
soenk.e