Anzeige:
Ergebnis 1 bis 6 von 6

Thema: PHP Array an JavaScript übergeben...

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302

    Unhappy PHP Array an JavaScript übergeben...

    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? ])
    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>
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Du versuchst ein Mehrdimensionales Array in einen String zu wandeln das kann so nicht gehen.
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    So sollte es gehen:
    Code:
    print "<script type='text/javascript'> var myarray = ".json_encode($person)."; </script>";
    Und noch ein Tipp:
    Code:
    for (var k in myarray) {

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302
    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
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    Zitat Zitat von Jor Beitrag anzeigen
    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
    php.net/utf8_encode
    Geändert von msi (31-01-2009 um 11:29 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.10.2005
    Ort
    Hamminkeln
    Beiträge
    302
    Hallo msi,

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

    Danke an euch drei!
    Vereinfacht die Dinge, und ihr erleichtert euch das Leben. (Henry David Thoreau)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •