Array an Javascript weitergeben

YelloW22

Erfahrenes Mitglied
hallo.

wie kann ich ein Array aus PHP an eine Javascriptfunction übergeben und dann dort verwenden?

habs so versucht, geht aber nicht weil laut Firebug "undefined"

PHP:
<html>
<head>
<script type="text/javascript">

function meineFunktion(text_array)
{
	alert (text_array[0]);
}

</script>
</head>

<body>
<?php

$text_array = array();
$text_array[] = "test";
echo "<script type=\"text/javascript\">meineFunktion($text_array);</script>";
?>
</body></html>
 
Zuletzt bearbeitet:
Warum sollte das auch funktionieren? JavaScript hat doch keine Ahnung was php für ein Array hält. Und schon garnicht was drin steht.
Du musst es dir schon zusammen basteln.
PHP:
<?php

$a = array();
$a[] = "foo";
$a[] = "bar";

?>
<script type="text/javascript">
var arr = new Array(<?php echo '"' . implode('","',$a) . '"'; ?>);
</script>
 
Du musst aus dem php-Array ein String machen und den in Java weider in ein array wandeln
ev. gibts auch elegantere Lösungen

PHP:
$text_array = array();
$text_array[] = "test";
$text_array[] = "test2";

//Jeden Inhalt mit "" umschliessen
foreach($text_array as $index => $text) $text_array[$index] = "\"{$text}\"";

//Die Inhalte zu einem String zusammenfügen -> '"test", "test1"'
$array_as_text = implode(', ', $text_array);

//Das Javascript soweit anpassen, dass es aus dem String wieder ein Array macht 
echo "<script type=\"text/javascript\">
    meineFunktion(new Array({$array_as_text}));</script>";
 
Ok, jetzt gebe ich meinen Senf auch noch dazu ;):

PHP:
<head>
<script type="text/javascript">

function meineFunktion(t)
{
js = t.split(",");
    alert (js[1]);

}

</script>
</head>

<body>
<?php

$text_array = array("test1", "test2");
$text = implode(",", $text_array);

echo "<script type=\"text/javascript\">meineFunktion(\"$text\");</script>";
?>
</body></html>
 
Mein Beispiel ist getestet. Ich denke die anderen auch.
Du hast 3 Beispiele die das ganze jeweils ein wenig anders angehen. Du darfst sie jetzt nur nicht mischen. Du musst dich für eine Variante entscheiden.

Noch ein Tipp. Mach dich schlau wie man in Javascript ein Array erstellt. Googeln nach Javascript + array sollte da weiterhelfen (oder mein Beispiel mal genau anschauen)
 
ich glaub ich bin echt zu blö dafür ...


die methode von tombe hab ich jetzt genommen, und das geht eingeschränkt.
habe nur bereits in php den string gebaut (mit komma getrent) und möchte in JS einfach den string ausgeben.
folge: ich bekomme nur den letzten teil, also alles nach dem letzten komma.
wieso ?
 
Yaslaws und meine Methode bauen das javascript Array quasi direkt.
Tombes Methode baut einen komma getrennten string in php und verwendet in javascript die Methode split um daraus ein array zu machen.

Ich vermute jetzt einfach mal du hast das split vergessen.

Noch ein Tipp: beherzige yaslaws Tipp ;)
 
ich blicks echt nich mehr ... habs jetzt so gemacht wie yazlaw ....
geht nicht ...

bekomme immer noch "array is undefined"

mein ansatz:

PHP:
foreach($alle_array as $index => $text) $alle_array[$index] = "\"{$text}\"";

//Die Inhalte zu einem String zusammenfügen -> '"test", "test1"'
$array_as_text = implode(', ', $alle_array);

//Das Javascript soweit anpassen, dass es aus dem String wieder ein Array macht
echo "<script type=\"text/javascript\">
    meineFunktion(new Array({$array_as_text}));</script>";

Javascript:
<script type="text/javascript">
function meineFunktion()
{
	var array_als_text;
	alert (array_als_text[1]);
}


</script>

was verdammtnochmal ist denn der fehler? hab keine lust mich mit so einer banalität ewig zu beschäftigen, unter zeitdruck...
 
mach mal ein var_dump() auf $alle_array bevor du den foreach machst. Ich geh davon aus, dass $alle_array leer ist.
 
Zurück