PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Array an JavaScript übergeben...



Jor
30-01-2009, 12:39
Hallo zusammen,

bevor die Wellen hochschlagen, ich habe gegoogelt und ich habe gelesen, und ich habe auch getestet... dennoch funzt es nicht...
Ich erstelle ein Array in PHP und übergebe es an eine Java Funktion, soweit so gut, aber ich bekomme keine Werte in Array-Form zurück (lediglich als Zeichenkette [ich vermute es geht auch garnicht ander, oder? :confused: ])
Den Code poste ich hier, es handelt sich um "Testcode" der mir die Funktion bringen soll, dannn wird verbessert. Wie kann ich den Code verbessern, dass ich mit Javascript übe rdie einzelnen Arrays laufen kann, und nicht alles in einem String habe?

Danke schon mal im Voraus!

PHP -> $person[0][0] = "'Hans'"; $person[0][1] = "'Habicht'";
$person[1][0] = "'Gerte'"; $person[1][1] = "'Zweig'";
$person[2][0] = "'Ferdinand'" ; $person[2][1] = "'Fuchs'";
$person[3][0] = "'Franz'"; $person[3][1] = "'Fliegenfänger'";
print "<script type='text/javascript'> var myarray = new Array(".implode(', ',$person)."); </script>";

Javascript ->
<script type="text/javascript">
<!--
function Show(){
var laeng=myarray.length;
document.writeln(laeng+" Records...<br><br>");
for(var k=0; k < myarray.length; k++) {
document.write(k+". Record -> ");
document.write("Wert: "+myarray[k][0]+"<br>");
}
}
//-->
</script>

undefined
30-01-2009, 15:57
Du versuchst ein Mehrdimensionales Array in einen String zu wandeln das kann so nicht gehen.

BLUESCREEN3D
30-01-2009, 20:04
So sollte es gehen:

print "<script type='text/javascript'> var myarray = ".json_encode($person)."; </script>";

Und noch ein Tipp:

for (var k in myarray) {

Jor
31-01-2009, 10:54
Hallo undefined und BLUESCREEN3D,

vielen Dank für eure Hilfe. :)
Das mit dem Wandeln eines Array in einen String stimmt natürlcih, dieses war nur der letzte Stand, bei dem ich überhaupt etwas rüber kam. Ich hätte auch darauf aufsetzen können, aber... ein Array ist mir schon lieber.
Was mich auch sofort zum Vorschlag von BLUESCREEN3D bringt, ich habe natürlich sofort etwas gegooglet und gelesen, dass das nur für UTF8 kodierte Strings (Arrayeinträge) gilt. Da ich aberauch Umlaute mit in den Daten habe, werden diese an der entsprechenden Stelle abgeschnitten.
Besteht die Möglichkeit das Abschneiden und den damit folgenden Datanverlust zu umgehen? Ich könnte natürlich beim Übergeben die Umlaute
entsprechende umbauen, aber beim Zurücklesen wäre das nicht mehr eindeutig, da es ja auch z. B. Namen gibt, die wie die Stadt "Voerde" geschrieben werden. Dort würde ja sonst "Vörde" stehen, was eindeutig falsch wäre.

Das Durchlaufen des Arrays per "for (var k in myarray)" ist eine komfortable Weise.

Viele Grüße
Volker

msi
31-01-2009, 11:26
Hallo undefined und BLUESCREEN3D,

vielen Dank für eure Hilfe. :)
Das mit dem Wandeln eines Array in einen String stimmt natürlcih, dieses war nur der letzte Stand, bei dem ich überhaupt etwas rüber kam. Ich hätte auch darauf aufsetzen können, aber... ein Array ist mir schon lieber.
Was mich auch sofort zum Vorschlag von BLUESCREEN3D bringt, ich habe natürlich sofort etwas gegooglet und gelesen, dass das nur für UTF8 kodierte Strings (Arrayeinträge) gilt. Da ich aberauch Umlaute mit in den Daten habe, werden diese an der entsprechenden Stelle abgeschnitten.
Besteht die Möglichkeit das Abschneiden und den damit folgenden Datanverlust zu umgehen? Ich könnte natürlich beim Übergeben die Umlaute
entsprechende umbauen, aber beim Zurücklesen wäre das nicht mehr eindeutig, da es ja auch z. B. Namen gibt, die wie die Stadt "Voerde" geschrieben werden. Dort würde ja sonst "Vörde" stehen, was eindeutig falsch wäre.

Das Durchlaufen des Arrays per "for (var k in myarray)" ist eine komfortable Weise.

Viele Grüße
Volker

dann konvertier die einträge deines arrays halt nach utf8 :rolleyes:
php.net/utf8_encode

Jor
31-01-2009, 21:47
Hallo msi,

danke für deinen Tipp, hat mir weiter geholfen. :)
Gelesen, gegoogelt, getestet... läuft!

Danke an euch drei!