[Variablen] Übergabe von PHP-Arrays an JavaScript

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Variablen] Übergabe von PHP-Arrays an JavaScript

    Ich habe lange im Netz gesucht, aber keinen Lösungsansatz für mein Problem gefunden....
    Ich hoffe hier in diesem Forum kann mir jemand weiter helfen!

    Problem:
    Ich lese Daten mittels php aus einer Datei ein und möchte diese nun an JavaScript übergeben.
    Dies ist ja eigentlich nicht das Problem - das funktioniert ja so:

    PHP-Code:
     var string = "<?php echo $username?>";
     var number = <?php echo $max?>;
    Das Problem was ich habe ist, dass sich meine Daten -im Gegensatz zu dem Beispiel- in einem Array befinden! - also:

    PHP-Code:
     for(var i=0; i<(array_length-1); i++) {
         var str_array[i] = "<?php echo $str_array[?]; ?>";
     }
    Nun, dass geht so ja nicht!
    - Ich denke auch, dass dies generell so nicht möglich ist, da ich für das Fragezeichen keine Variablen einsetzen kann.
    - Auch denke ich, dass es keinen Sinn macht zu versuchen bloß den Pointer des Arrays zu übergeben - das wäre ja nur die Speicheradresse zu den Daten im Serverspeicher.

    Gibt es da einen Trick? Hat jemand eine Idee?

    Ich bin Anfänger und komme an dieser Stelle leider alleine nicht mehr weiter...


    Allen ein Gutes Neues Jahr!!!
    Zuletzt geändert von MrBusty; 06.01.2007, 21:25.

  • #2
    erzeuge das script dynamisch:

    ein array ($namen) beinhaltet dabei die variablen namen (string, number,...)
    der andere ($daten) die daten.

    dann

    PHP-Code:
    <?
    $ausgabe="<script type=text/javascript>\n\n";
    for($i=0;$i< $daten.count;$i++){
    $ausgabe.="var " .$namen[$i]. " = " .$daten[$i]. " ;\n";
    }
    $ausgabe.="</script>";

    print($ausgabe);
    ?>
    und fertig ist die hexerei. musst halt darauf achten, dass strings im javascript doublequotes brauchen, also is unterumständen eine spielerei mit zwei arrays. wichtig ist auch, dass die array synchronisiert sind.

    p.s.:
    bei einem array - auch im javascript:
    PHP-Code:
    <?
    $ausgabe="<script type=text/javascript>\n\n";
    $ausgabe.="var variables=array(".$daten.count");\n";
    for($i=0;$i< $daten.count;$i++){
    $ausgabe.="var variables[" .$i. "] = " .$daten[$i]. " ;\n";
    }
    $ausgabe.="</script>";

    print($ausgabe);
    ?>
    Zuletzt geändert von helmuth; 06.01.2007, 21:38.

    Kommentar


    • #3
      Danke!!!!

      Besten Dank helmuth - das hat mir sehr geholfen!!!
      Hätte ich nie alleine hinbekommen!

      Ich musste noch einiges abändern - aber die Übergabe des Arrays funktioniert nun einwandfrei:

      PHP-Code:
      <?php
          $ausgabe 
      "<script type=\"text/javascript\">\n";
      //    $ausgabe.= "    var menu_de = new Array(" .count($menu_de). ");\n";
      //    $ausgabe.= "    var menu_en = new Array(" .count($menu_de). ");\n";
          
      $ausgabe.= "    counter =" .count($menu_de). ";\n";
          
          for(
      $i=1$i<=count($menu_de); $i++) {
              
      $ausgabe.="    menu_de[" .$i"] = \"" .$menu_de[$i]. "\";\n";
              
      $ausgabe.="    menu_en[" .$i"] = \"" .$menu_en[$i]. "\";\n";
          }
          
      $ausgabe.="</script>";
          
          print(
      $ausgabe);
      ?>
      menu_de, menu_en und counter hatte ich provisorisch als globale Variablen deklariert, weshalb ich die 2 Zeilen auskommentieren konnte.



      Ich habe jetzt aber noch eine Sache, welche ich nicht verstehe:

      Ich hatte zunächst das Einlesen der Datei über JavaScript gelöst - dass dies aber nur im Firefox funktionierte, war der Grund dafür, weshalb ich nach einer Lösung mittels PHP suchte.

      Aber -zumindest im Firefox- hat der Nachfolgende Java-Code funktioniert, jetzt aber gibt es da Probleme.... Kann mir jemand erklären, woran das liegt - ich würde gerne den Grund verstehen wollen.


      Vorher funktionierte folgender Code:

      if(menu_de[i].substring(0, 2).compareTo("# ") == 0)

      Geht nach der Änderung nicht mehr - habe dafür aber folgende Lösung (nur keine Erklärung wiso das so ist???):

      if(menu_de[i].substring(0, 2) == "# ")


      Außerdem geht das auch nicht mehr:

      tmpTxt = menuTxt.replaceAll("\'", "");

      Hat da jemand eine Lösung für das Ersetzten der Hochkommas parat?
      - auch wenn das wohl eher ein JavaScript-Problem ist... (?)


      Und wiso ist das so? Mir scheint es fast so, als ob ich nun mit einer ganz anderen String-Klasse arbeite... (?)
      Zuletzt geändert von MrBusty; 07.01.2007, 00:54.

      Kommentar


      • #4
        na klar.


        wenn du von php aus javascript schreibst musst du natürlich die hochkommas mit einem backslash versehen, da das sonst ja als ende des strings interpretiert wird.

        tmpTxt = menuTxt.replaceAll(\"\'\",\ "\");

        Kommentar


        • #5
          Original geschrieben von helmuth
          [...]wenn du von php aus javascript schreibst[...]
          Sorry, mein Fehler - hätte das dazu schreiben sollen:

          Also, dass was ich im letzten Post fett geschrieben habe, war keine JavaScript von PHP aus - sondern reines JavaScript nach dem PHP-Block.

          Ich habe es jetzt wie folgt gelöst:

          Funktion replaceAll im JavaScript-Block des Headers:
          PHP-Code:
          function replaceAll(SourceStringFindStringReplaceString) {
              var 
          SearchIndex 0;
              var 
          NewString "";

              while (
          SourceString.indexOf(FindStringSearchIndex) != -1) {
                  
          NewString += SourceString.substring(SearchIndexSourceString.indexOf(FindStringSearchIndex));
                  
          NewString += ReplaceString;
                  
          SearchIndex = (SourceString.indexOf(FindStringSearchIndex) + FindString.length);
              }

              
          NewString += SourceString.substring(SearchIndexSourceString.length);
              return 
          NewString;

          Benutzen der Funktion wie folgt:
          PHP-Code:
              tmpTxt replaceAll(menuTxt"\'"""); 
          Trotzdem großen Dank, du hast mir sehr geholfen!

          Mein Problem ist also gelöst!
          Was mich jetzt noch interessieren würde, wäre der Grund, warum mein alter Code teilweise nicht mehr funktionierte... es hat sich ja im Grunde nichts geändert - außer, dass ich die Daten aus der Datei statt mit JavaScript nun mit PHP auslese...
          Zuletzt geändert von MrBusty; 07.01.2007, 05:03.

          Kommentar

          Lädt...
          X