【问题标题】:highchart stacked bar plotting data doesn't work by javascriptjavascript无法使用highchart堆积条形图绘制数据
【发布时间】:2017-09-24 15:59:14
【问题描述】:

为什么会这样,我在条形高图中绘制数据时遇到了麻烦。我正在使用这个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(month) 那里做了什么,我做了几个月的全面检查: 这是我的控制台的结果,因为我的类别只有两个月返回,然后我有两个用于 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"}]

【问题讨论】:

  • 有什么答案吗?

标签: javascript ajax dynamic highcharts


【解决方案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']));
           }
        }
    });
}

【讨论】:

  • thankssssss 先生,.. 你能追踪我的代码吗?有什么其他情况会出错吗?
  • 如果代码执行您希望它执行的操作,那么它有可能是可以的。对于代码审查,最好使用CodeReview 资源。
猜你喜欢
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
相关资源
最近更新 更多