我正在尝试将图表值从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
我的错误是数据数组必须是对象数组,而不是字符串。
即使这样,我仍然无法使“ 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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。