javascript - 从函数中使用数据加载器时,Amchart 未显示

标签 javascript html jsp servlets amcharts

我正在调用 amchart 数据加载器的函数返回。单击按钮即可调用该函数。单击该按钮也会调用该图表。但问题是我没有得到图表。

 function myFunction() {
              var edited = "[{";
                for(var i=0;i<3;i++) {
              var one = document.getElementById("testid"+i).value;
              var two =  document.getElementById("testavg"+i).value;
              edited += '"'+"Test_Id"+'":"'+one+'",'+'"Test_Average"'+':'+two+'},{';
                }
              edited = edited.slice(0,-2);
              edited += "]";
              alert(edited);
              return edited;  
              }


            function charts(){
            var chartDataa = myFunction();  
            var chart = AmCharts.makeChart( "chartdiv", {
                  "type": "serial",
                  "theme": "light",
                  "dataProvider": chartDataa,
                  "valueAxes": [ {
                    "gridColor": "#FFFFFF",
                    "gridAlpha": 0.2,
                    "dashLength": 0
                  } ],
                  "gridAboveGraphs": true,
                  "startDuration": 1,
                  "graphs": [ {
                    "balloonText": "[[category]]: <b>[[value]]</b>",
                    "fillAlphas": 0.8,
                    "lineAlpha": 0.2,
                    "type": "column",
                    "valueField": "Test_Average"
                  } ],
                  "chartCursor": {
                    "categoryBalloonEnabled": false,
                    "cursorAlpha": 0,
                    "zoomable": false
                  },
                  "categoryField": "Test_Id",
                  "categoryAxis": {
                    "gridPosition": "start",
                    "gridAlpha": 0,
                    "tickPosition": "start",
                    "tickLength": 20
                  },
                  "export": {
                    "enabled": true
                  }
                });
  }

The chart that I am getting right now looks like this

最佳答案

您的函数 myFunction 返回一个 JSON 字符串。 amCharts dataProvider prop 需要一个对象数组(一个 JS 对象,而不是一个 JSON 字符串)。尝试将 myFunction 更改为一个函数,该函数创建一个包含数据对象的数组。 (我还建议将其重命名为更具描述性的名称)。您可以这样做:

function getChartData() {
          var dataprovider = [];
          for(var i = 0; i < 3; i++) {

            dataprovider.push({
              "Test_Id": document.getElementById("testid"+i).value,
              "Test_Average": document.getElementById("testavg"+i).value
            });

          }

          return dataprovider; 
}


function charts(){
        var chartData = getChartData();  
        var chart = AmCharts.makeChart( "chartdiv", {
              "type": "serial",
              "theme": "light",
              "dataProvider": chartData,
              "valueAxes": [ {
                "gridColor": "#FFFFFF",
                "gridAlpha": 0.2,
                "dashLength": 0
              } ],
              "gridAboveGraphs": true,
              "startDuration": 1,
              "graphs": [ {
                "balloonText": "[[category]]: <b>[[value]]</b>",
                "fillAlphas": 0.8,
                "lineAlpha": 0.2,
                "type": "column",
                "valueField": "Test_Average"
              } ],
              "chartCursor": {
                "categoryBalloonEnabled": false,
                "cursorAlpha": 0,
                "zoomable": false
              },
              "categoryField": "Test_Id",
              "categoryAxis": {
                "gridPosition": "start",
                "gridAlpha": 0,
                "tickPosition": "start",
                "tickLength": 20
              },
              "export": {
                "enabled": true
              }
            });
}

您还可以保持代码不变,并将 myFunction 的最后一行更改为:return JSON.parse(edited);

关于javascript - 从函数中使用数据加载器时,Amchart 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571211/

相关文章:

javascript - Youtube API,不允许除声音控制之外的控制?

php - 如何在某个字符之后匹配字符串中的第一个字符?

javascript - jQuery Mobile 导航故障

javascript - TableSorter 寻呼机中的自定义页面拆分器

javascript - 如何检测文本框中某些文本的位置?

javascript - 如何在单击按钮时切换隐藏/显示具有相同类名的所有元素

javascript - HTML/CSS -- 如何添加选中状态

java - 我想从数据库中检索图像并将其显示在jsp页面中

java - 使用 jsp request.getContextPath() 使 eclipse 无法识别 css 文件

javascript - 如何从 Controller 返回 jsp 作为弹出窗口