我从服务器收到了3个数组作为响应,我尝试使用ChartJS创建一个折线图。当我输入静态值时,折线图结果很好,但当从服务器传递新数据时,它不能反映变化。
var months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
var rdone_array = []
var rdtwo_array = []
var rdthree_array = []
// for graph data backend calls
function get_graphData(year, timePeriod, direction){
let year_value = year;
let timePeriod_value = timePeriod;
let direction_value = direction;
$.ajax({
method:"get",
url:"/los_graph",
data:{
db_year:year_value,
db_timePeriod:timePeriod_value,
db_direction_value:direction_value,
},
success:function(res){
rdone_array = JSON.parse("[" + res['rdone'] + "]")
rdtwo_array = JSON.parse("[" + res['rdtwo'] + "]")
rdthree_array = JSON.parse("[" + res['rdthree'] + "]")
// updating chart
myChart.update();
}
});
// console.log("second step")
}
// frontend chart code
var data = {
labels: months,
datasets: [
{
label: 'Road 1',
borderColor: '#d62828',
data: rdtwo_array,
borderWidth: 2,
},
{
label: 'Road 2',
borderColor: '#f77f00',
data: rdone_array,
borderWidth: 2,
},
{
label: 'Road 3',
borderColor: '#fcbf49',
data: rdthree_array,
borderWidth: 2,
}
]
};
var config = {
type: 'line',
data: data,
options: {
responsive: true
},
scales: {
y: {
title: {
display: true,
text: 'Value'
},
ticks: {
min: 0,
max: 150,
color: "white",
// forces step size to be 50 units
stepSize: 10
}
}
}
};
var myChart = new Chart(
document.getElementById('myChart'),
config,
);
由服务器响应填充后的数组如下所示:
当我的应用程序启动时,图表如下所示(因为数组为空):
我已经尝试在 AJAX 请求的成功部分执行“myChart.update()”,但结果证明并不成功。
输出应该如下所示,并且当服务器以不同的值响应时,输出会动态变化。
1条答案
按热度按时间643ylb081#
定义一个函数,并在 AJAX 请求的“success”部分之后调用它,已经为我解决了这个问题。
我现在调用这个函数。