1

所以我正在使用库ECharts为我在网站上拥有的各种数据创建一些图表。这是我第一次使用这个库,我对 Javascript/jQuery 还很陌生。我想要做的是将 xAxis 数据设置为来自本地页面的结果,该页面将返回一个 JSON 对象,其中包含一个包含星期几的数组。完成此操作后,我计划以相同的方式加载系列数据。

返回的 JSON 是这个

在此处输入图像描述

当我尝试为 xAxis 设置数据时,我正在这样做,如图所示

xAxis: [{
    type: 'category',
    boundaryGap: false,
    data: function(){
        $.ajax({
            type: "POST",
            url: "ajax/getData.php?test=t&graph_last_days=d&days=7",
            cache: false,
            success: function(result){
                return result.data;
                //console.log(result.data);
            }
        });
    }

}],

但是,我不断收到错误Uncaught TypeError: o.slice is not a function并且仅当我尝试使用这种设置数据的方法时才会输出此错误。除此之外,如果我尝试创建一个函数来从外部页面返回数据并为其设置一个变量,那么每当我尝试将其打印到控制台时,它都会显示未定义

如果我不使用我的方法尝试加载外部数据并且我像这样预定义数据

xAxis: [{
    type: 'category',
    boundaryGap: false,
    data: [
        'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'
    ]
}]

然后没有错误,它工作得很好

任何人都可以看到问题吗?

4

2 回答 2

1

似乎在与某些人交谈后,唯一可用的示例用法或文档是他们拥有的这个示例,这与我的问题密切相关

如果其他人想要一些与 ajax 或使用ECharts加载动态数据相关的示例,那么这里有一些(英文) *


有用的提示

如果您不会说中文,并且您正在使用某种翻译器来获取他们的代码示例;请注意,Google TranslateBing Translator等网站通常会通过执行以下操作错误地翻译 JS 中使用的标点符号,

  • 将带单引号的数组翻译成带单引号双引号的数组:从而导致语法错误。
  • 从对象中删除逗号 (,)。
  • 将分号 (;) 更改为冒号 (:) 甚至删除它们。
于 2016-01-22T01:44:30.563 回答
1

echarts 从 Ajax 调用推送数据的完整示例

data.importPorts -> 字符串数组 data.importBD -> 对象数组 { clientanem : [4,5,6,7,3]}

$.get("/Home/Graph1", { clients: "403,300", years: "2012" })
          .done(function (data) {
              var option = {
                  tooltip: {
                      show: true
                  },
                  legend: {
                      data: (function () {
                          var res = [];
                          for (var name in data.importBD) {
                              res.push(name);
                          };
                          return res;
                      })()
                  },
                  xAxis: [
                      {
                          type: 'category',
                          data: (function () {
                              var res = [];
                              data.importPorts.forEach(function (i) {
                                  res.push(i);
                              });
                              return res;
                          })()
                      }
                  ],
                  yAxis: [
                      {
                          type: 'value'
                      }
                  ],
                  series: [
                      {

                      }
                  ]
              };

              for (var name in data.importBD) {
                  var obj = {
                      name: name,
                      type: "bar",
                      data: data.importBD[name]
                  };

                  option.series.push(obj);

              }
              // Load data into the ECharts instance
              imprtChart.setOption(option);
          });
于 2016-12-01T22:13:46.143 回答