开发者社区> 问答> 正文

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} ]``` 我在哪儿弄乱了?

问题来源:Stack Overflow

展开
收起
montos 2020-03-28 09:16:36 548 0
1 条回答
写回答
取消 提交回答
  • 我的错误是数据数组必须是对象数组,而不是字符串。

    即使这样,我仍然无法使“ 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);
    });
    
    

    回答来源:Stack Overflow

    2020-03-28 09:31:52
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多