java - ChartJS“无法获取未定义或空引用的属性'getTime'”
问题描述
我正在尝试将图表值从 java servlet 传递到网页。图表应将日期显示为 x,整数显示为 y。
servlet 发送包含年、月、日和值的对象数组。
功能:
function getMultiChart() {
jQuery.ajax({
type: "POST",
data: {formType: 'getProjection'},
url: "ChartServlet",
dataType: 'json',
asynch: false,
success: function (data) {
var obj = JSON.stringify(data);
var obj2 = JSON.parse(obj);
var tmpArr = new Array();
jQuery.each(obj2, function (prop, val){
tmpArr.push("x: new Date(" + Number(val.year) + "," + Number(val.month) + "," + Number(val.day) + "), y: " + Number(val.value));
});
var chart = new CanvasJS.Chart("chartContainer",{
title: {
text: "Manpower"
},
data: [
{
type: "column",
indexLabel: "{y}",
indexLabelPlacement: "outside",
indexLabelOrientation: "horizontal",
showInLegend: true,
name: "Overtime Personnel",
dataPoints: tmpArr
}
]
});
chart.render();
},
error: function () {
console.log(data);
}
});
}
当我运行它时,我在 ChartJS.js 中得到了上述错误。
如果我用硬编码值替换 json 数据,它可以正常工作,例如:
var tmpArr = [
{x: new Date(2020, 01, 1), y: 18},
{x: new Date(2020, 01, 2), y: 0},
{x: new Date(2020, 01, 3), y: 0},
{x: new Date(2020, 01, 4), y: 0},
{x: new Date(2020, 01, 5), y: 0},
{x: new Date(2020, 01, 6), y: 0},
{x: new Date(2020, 01, 7), y: 0},
{x: new Date(2020, 01, 8), y: 0},
{x: new Date(2020, 01, 9), y: 0},
{x: new Date(2020, 01, 10), y: 0},
{x: new Date(2020, 01, 11), y: 0},
{x: new Date(2020, 01, 12), y: 0}
]
我在哪里搞砸了?
解决方案
我的错误是数据数组必须是对象数组,而不是字符串。
即使这样,我仍然无法让“x: new Date(...)”部分工作。
工作代码是:
var tmpArr = new Array();
jQuery.each(obj2, function (prop, val) {
var t = {y: val.value, label: val.month + "/" + val.day + "/" + val.year};
tmpArr.push(t);
});
推荐阅读
- amazon-s3 - Amplify CLI 找不到命令:pull
- c - 释放内存时出现分段错误错误
- android - 为什么每当我尝试将数据类的元素添加到 RecyclerView 时应用程序崩溃
- python - \在python中做了什么?
- c# - C#/XML/Parsing/比较不同程序保存的文件位置,一种在uri中使用localhost
- tensorflow - 训练SSD-MOBILENET V1,损失不减
- excel - read_excel 在 index_col=none 时使用 pandas 创建索引
- python-3.x - 如何使用 mapbox 创建一个等值线地图并在国家一级进行绘图?
- swift - 快速解码对象数组
- python - 循环时将数据框的每一列保存在新的数据框中