Создание диаграммы с использованием JSON, JQUERY и AJAX

#javascript #php #html #jquery #ajax

#javascript #php #HTML #jquery #ajax

Вопрос:

Я пытаюсь заполнить диаграмму, используя данные JSON, которые были получены из базы данных с использованием PHP. Я провел некоторое исследование, прежде чем перейти к stackoverflow. Я использую форматирование гистограммы anychart. Ниже приведен мой PHP-код:

 if (isset($_POST['myData'])){
    $integer = $_POST['myData'];


    if ($integer === "3"){
    
    include 'db_connection.php';
    
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $return_arr3 = array();
    $query = "SELECT Wins, Loses, Draws FROM `record` WHERE Year = '2019/2020'";
    $result = mysqli_query($conn,$query);

    while($row = mysqli_fetch_array($result)){
        $wins = $row['Wins'];
        $loses = $row['Loses'];
        $draws = $row['Draws'];

        $return_arr3[] = array("Wins" => $wins,
                              "Loses" => $loses,
                             "Draws" => $draws);
        echo($return_arr3);
}

    // Encoding array in JSON format
    echo json_encode($return_arr3);
}
 

Тогда вот мой HTML-код.

 <div id="minutes_popup" class="popupcontainer">
  <script src="https://cdn.anychart.com/releases/8.8.0/js/anychart-base.min.js"></script>
  <script src="https://cdn.anychart.com/releases/8.8.0/js/anychart-data-adapter.min.js"></script>
</div>  
 

Наконец, вот мой код JavaScript.

 $("#minutes").click(function(){
alert("Button works"); 

$("#minutes_popup").toggle();   

var integer = $("#minutes").attr("name");
alert("integer: "   integer);

$.ajax('includes/test.php', {
    type: 'POST',  // http method
    data: {myData: integer},// data to submit
    dataType: 'json',
    success: function(response){
    anychart.onDocumentReady(function () {
    anychart.data.loadJsonFile("includes/test.php", function (response) {
        // create a chart and set loaded data
        chart = anychart.bar(response);
        chart.container("minutes_popup");
        chart.draw();
    });
    });
    }
});
}); 
 

Этот код не работает по какой-то неизвестной мне причине. На консоли не появляется ошибок, и данные передаются на консоль в этом формате:

[{«Выигрывает»: «34», «Проигрывает»: «19», «Рисует»: «10»}]

Однако столбчатая диаграмма не создается.

Если кто-нибудь может сказать мне, как исправить мой код, я был бы очень благодарен.

Комментарии:

1. В чем проблема? Вы только что упомянули «глупую проблему». Для дальнейшего использования всегда описывайте свою проблему и добавляйте в вопрос любые ошибки и усилия по отладке.

2. Я вижу одну «глупую проблему»: $query = "SELECT Wins, Loses, Draws FROM `record` WHERE Year = "2019/2020""; . Вы не можете так смешивать кавычки. То, что вы считаете начальной цитатой 2019/2020 , на самом деле закрывает SELECT начальную цитату. Используйте одинарные кавычки для значения или экранируйте двойные кавычки вокруг значения.

3. Спасибо за вашу помощь. Я изменил этот код. Теперь проблема, с которой я сталкиваюсь, заключается в том, что массив отображается на консоли, однако он не используется на диаграмме? Вместо этого я просто вижу белый экран. Есть идеи, почему это так?

4. Проверьте свой ответ AJAX (панель инструментов разработчика> вкладка сеть> нажмите на запрос> нажмите Ответ) на наличие дальнейших ошибок. Также проверьте вкладку консоль, чтобы увидеть любые ошибки клиента. Пустая страница может быть множеством вещей.

5. Я проверил консоль и вкладку сети. Ошибок нет. Данные извлекаются и отображаются в разделе сети. Но также и моя ошибка в объяснении моей ошибки. Белый экран — это просто всплывающее окно, в котором должен отображаться график.