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

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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.