Диаграмма. js - Ajax ответ не принимаю - PullRequest
1 голос
/ 29 мая 2020

диаграмма. js не принимаю ajax сообщение - json respose.i пока не удалось решить. Пожалуйста, помогите .. https://prnt.sc/spt4p3 https://prnt.sc/spt6j0

мой json файл:

[{"DAYS":"01.05.2020","VALUES":"0"},{"DAYS":"02.05.2020","VALUES":"0"},{"DAYS":"03.05.2020","VALUES":"0"},{"DAYS":"04.05.2020","VALUES":"0"},{"DAYS":"05.05.2020","VALUES":"0"},{"DAYS":"06.05.2020","VALUES":"0"},]

javascript файл:

                var days = [];
                var values=[];
                $.ajax({
                    url: 'class/report/daily_report.php',
                    type: 'POST',
                    data: {'reload': 'renew', 'type': 'rep_1'},
                    success: function (response) {
                        var jsonARR =$.parseJSON(response);
                        var k=0;
                        for ( var key in jsonARR ) {
                            days[k]=jsonARR[key]["DAYS"];
                            values[k]=parseInt(jsonARR[key]["VALUES"]);
                            k++;
                        }

                    }
                });
                var a = {
                    labels: days,
                    datasets: [{
                        backgroundColor: KTApp.getStateColor("danger"),
                        data: values
                    }]
                };

1 Ответ

1 голос
/ 29 мая 2020

Напоминаем, что $.ajax() выполняет асинхронный HTTP-запрос. Однако в вашем коде вы создаете диаграмму даже до того, как будет получен ответ на этот запрос.

Проблема может быть решена путем перемещения кода, отвечающего за создание диаграммы, внутри блока $.ajax(), как показано ниже.

$.ajax({
  success: function(response) {
    var jsonARR = $.parseJSON(response);
    var k = 0;
    for (var key in jsonARR) {
      days[k] = jsonARR[key]["DAYS"];
      values[k] = parseInt(jsonARR[key]["VALUES"]);
      k++;
    };
    var a = {
      labels: days,
      datasets: [{
        backgroundColor: KTApp.getStateColor("danger"),
        data: values
      }]
    };
    new Chart(...);
  });
...