Php-Code blockiert Javascript beim übertragen von Array von PHP zu JS

  • Php-Code blockiert Javascript beim übertragen von Array von PHP zu JS

    Hallo,


    tut mir Leid aber ich verzweifel gerade echt. seit 4 Stunden versuche ich nunmehr meine Arrays von PHP zu JavaScript zu übertragen! Wenn ich den das hier ist mein kompletter Code , er steht so in einer Datei. Wenn ich den unteren Block php auskommentiere funktionieren die Alerts wieder (letzter undefined, ist ja logisch)

    HTML-Quellcode

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    3. <head>
    4. <title>Karteikartenerstellung</title>

    PHP-Quellcode

    1. <?php
    2. $themengebiet = array();
    3. $wissensstufe = array();
    4. $teilgebiet = array();
    5. $buch = array();
    6. $kapitel = array();
    7. $frage = array();
    8. $antwort = array();
    9. $i = 0;
    10. $db_link = @mysqli_connect ('localhost', 'root', 'Kennwort');
    11. mysqli_select_db($db_link, 'schlaumi');
    12. $sql_kartei_vorhanden = "SELECT
    13. `Themengebiet` AS Themengebiet_vorhanden,
    14. `Wissensstufe` AS Wissensstufe_vorhanden,
    15. `Teilgebiet` AS Teilgebiet_vorhanden,
    16. `Buch` AS Buch_vorhanden,
    17. `Kapitel` AS Kapitel_vorhanden,
    18. `Frage` AS Frage_vorhanden,
    19. `Antwort` AS Antwort_vorhanden
    20. FROM standardkarten"; // hier muss noch durch die BenutzerID eingeschränkt werden
    21. $result_kartei_vorhanden = mysqli_query($db_link,$sql_kartei_vorhanden);
    22. if(!$result_kartei_vorhanden){echo ("Etwas stimmt nicht, oder die Tabelle ist leer");}else{echo $result_kartei_vorhanden->num_rows;}
    23. while ($row=mysqli_fetch_assoc($result_kartei_vorhanden)){
    24. $themengebiet[$i] = $row['Themengebiet_vorhanden'];
    25. $wissensstufe[$i] = $row['Wissensstufe_vorhanden'];
    26. $teilgebiet[$i] = $row['Teilgebiet_vorhanden'];
    27. $buch[$i] = $row['Buch_vorhanden'];
    28. $kapitel[$i] = $row['Kapitel_vorhanden'];
    29. $frage[$i] = $row['Frage_vorhanden'];
    30. $antwort[$i] = $row['Antwort_vorhanden'];
    31. $i++;
    32. }
    33. mysqli_free_result($result_kartei_vorhanden);
    34. ?>
    Alles anzeigen

    JavaScript-Quellcode

    1. <script type="text/javascript">
    2. alert ("Hallo");
    3. var Themengebietvorhanden = new Array;
    4. var Wissensstufevorhanden = new Array;
    5. var Teilgebietvorhanden = new Array;
    6. var Buchvorhanden = new Array;
    7. var Kapitelvorhanden = new Array;
    8. var Fragevorhanden = new Array;
    9. var Antwortvorhanden = new Array;
    10. var KartenAnzahl = 0;

    PHP-Quellcode

    1. <?php
    2. echo "KartenAnzahl = '" . $i . "';\n";
    3. for ($n=0;$n<$i;$n++){
    4. echo "Themengebietvorhanden[$n] = '" . $themengebiet[$n] . "';\n" .
    5. "Wissensstufevorhanden[$n] = '" . $wissensstufe[$n] . "';\n" .
    6. "Teilgebietvorhanden[$n] = '" . $teilgebiet[$n] . "';\n" .
    7. "Buchvorhanden[$n] = '" . $buch[$n] . "';\n" .
    8. "Kapitelvorhanden[$n] = '" . $kapitel[$n] . "';\n" .
    9. "Fragevorhanden[$n] = '" . $frage[$n] . "';\n" .
    10. "Antwortvorhanden[$n] = '" . $antwort[$n] . "';\n";
    11. }
    12. ?>
    Alles anzeigen

    JavaScript-Quellcode

    1. alert (KartenAnzahl);
    2. alert (Fragevorhanden[0]);
    3. </script>

    Quellcode

    1. </head>
    2. <body>
    3. </body>
    4. </html>
  • Hi, schau dir mal unseren Wiki Artikel zum Thema [wiki]JSON: PHP und JavaScript[/wiki] an.

    Dir fehlt das json_encode damit doppelte Anführungszeichen und Zeilenumbrüche escapet werden.

    FALSCH

    Quellcode

    1. echo "Themengebietvorhanden[$n] = '" . $themengebiet[$n] . "';\n";


    RICHTIG

    Quellcode

    1. echo "Themengebietvorhanden[$n] = " . json_encode($themengebiet[$n]) . ";";


    Vermutlich würde es sich auch anbieten, anstatt mit den 8 Variablen zu arbeiten, einfach ein großes Array zu verwenden.