高图堆积条形图数据无法通过javascript

时间:2017-04-27 02:58:30

标签: javascript ajax dynamic highcharts

为什么会这样,我在绘制条形图中的数据时遇到了麻烦。我正在使用此chart.series[i].addPoint(data[i]['total_check']);,但当我提醒alert(data[i]['total_check']);时有值,但是当我在条形图中绘制它时,它不会出现。我想知道我的代码是否出错? 。 这是我的代码,我从条形图中绘制点:

function getbarseries(month) {
    $.ajax({
      url: siteurl+"patients_report/bardataclinic/"+month,
      type: "POST",
      dataType: "JSON",
        success: function(data) {
           for(var i in data) {
               chart.series[i].addPoint(data[i]['total_check']);
               //alert(data[i]['total_check']);
           }
        }
    });
}

我正在通过递归方式绘制图表,因此我的代码的主要部分是:

function getbarxAxis() {
 $.ajax({
   url: siteurl+"patients_report/bardata_date",
   type: "POST",
   dataType: "JSON",
   success: function(data) {
     var categories = new Array();
     for (var i in data) {
       categories.push(data[i]["datemonths"]);
     }
    loadChart(categories);
    getallclinics();
    var arrayLength = categories.length;
    for(var loop = 0;loop<arrayLength;loop++) {
        getbarseries(categories[loop]);
    }

   }
 });
}

我正在制作一个动态条形高清图,这就是为什么首先,在绘制类别之后,我正在使用loadChart(categories);的函数查询类别(月份),

function loadChart(categories) {
   chart = Highcharts.chart('container', {
    chart: {
        type: 'bar'
    },
    title: {
        text: ''
    },
    xAxis: {
        categories: categories
    },
    yAxis: {
        min: 0,
        title: {
            text: 'Detailed patient per clinic'
        }
    },
    legend: {
        reversed: true
    },
    plotOptions: {
        series: {
            stacking: 'normal'
        }
    },
    plotOptions: {
            series: {
                stacking: 'normal'
            }
    }
});
}

在我绘制了类别之后,其中的下一个是系列数据名称,其中我还创建了一个新函数来在我的数据库中查询并绘制所有数据系列名称,名为getallclinics();的函数 getallclinics函数的完整代码是:

function getallclinics() {
   $.ajax ({
          url: siteurl+"patients_report/seriesclinics",
          type: "POST",
          async: false,
          dataType: "JSON",
          success: function(data) {
            for(var i in data) {
              chart.addSeries({
                  name: data[i]['clinic_name']
              });
            }
          }
   });
}
在获得诊所后,最后一部分是我遇到麻烦的地方,我想要从声明的系列名称中绘制数据,所以上面的代码是getbarseries就是我的意思遇到麻烦,我在那里策划chart.series[i].addPoint(data[i]['total_check']);

我的getbarseries的完整代码:

function getbarseries(month) {
    $.ajax({
      url: siteurl+"patients_report/bardataclinic/"+month,
      type: "POST",
      dataType: "JSON",
        success: function(data) {
           for(var i in data) {
               chart.series[i].addPoint(data[i]['total_check']);
               //alert(data[i]['total_check']);
           }
        }
    });
}

我每个月从函数getbarseries(月份)那里做了什么,我得到了我的月份总体检查: 这是我的控制台的结果,因为我的类别只返回了两个月,然后我有getbarseries函数的两个递归循环

第一个递归循环:[{"clinic_name":"Clinic 1","total_check":"0"},{"clinic_name":"Clinic 2","total_check":"1"},{"clinic_name":"Clinic 3","total_check":"0"},{"clinic_name":"Clinic 4","total_check":"0"}]

第二个递归循环:[{"clinic_name":"Clinic 1","total_check":"2"},{"clinic_name":"Clinic 2","total_check":"0"},{"clinic_name":"Clinic 3","total_check":"0"},{"clinic_name":"Clinic 4","total_check":"0"}]

1 个答案:

答案 0 :(得分:1)

您的数据似乎是字符串,您需要将它们解析为数字。

您可以使用:Convert argument to number

function getbarseries(month) {
    $.ajax({
      url: siteurl+"patients_report/bardataclinic/"+month,
      type: "POST",
      dataType: "JSON",
        success: function(data) {
           for(var i in data) {
               chart.series[i].addPoint(Number(data[i]['total_check']));
           }
        }
    });
}