在使用Chart.js繪制圖表時,我們通常會有這樣的需求:從后台方法動態獲取圖表的數據,而非Demo中使用的靜態數據。本文將分享如何使用Ajax動態請求JSON數據並且完成圖表的繪制。
解決方案
在html頁中添加對Chart.js的引用(下載js文件或者添加CDN引用)
https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.js
1 使用HTML5<canvas>標簽定義一個圖形容器,用來繪制圖形
<canvas id="myChart" width="740" height="200"></canvas> 1 在JS文件中添加 function drawRadarChart() ;
function drawLineChart() {
// 格式化時間數據
Date.prototype.formatMMDDYYYY = function() { return (this.getMonth() + 1) + "/" + this.getDate() + "/" + this.getFullYear(); }
//使用Ajax獲取json數據 var jsonData = $.ajax({ url: '/mySensor/SensorRecord_getSensorRecord', dataType: 'json', }).done(function (results) {
// 將獲取到的json數據分別存放到兩個數組中 var labels = [], data=[]; for(var sensorRecord in results) { labels.push(new Date(results[sensorRecord].date).formatMMDDYYYY()); data.push(parseFloat(results[sensorRecord].sensorValue)); }
// 設置圖表的數據
var tempData = { labels : labels, datasets : [{ label: "溫度", fill: true, lineTension: 0.1, backgroundColor: "rgba(75,192,192,0.4)", borderColor: "rgba(75,192,192,1)", borderCapStyle: 'butt', borderDash: [], borderDashOffset: 0.0, borderJoinStyle: 'miter', pointBorderColor: "rgba(75,192,192,1)", pointBackgroundColor: "#fff", pointBorderWidth: 1, pointHoverRadius: 5, pointHoverBackgroundColor: "rgba(75,192,192,1)", pointHoverBorderColor: "rgba(220,220,220,1)", pointHoverBorderWidth: 2, pointRadius: 1, pointHitRadius: 10, data: data, spanGaps: false, }] };
// 獲取所選canvas元素的內容 var ctx = document.getElementById("myChart"); //設置圖表高度 ctx.height=9;
// 初始化一個新的雷達圖 var myLineChart = new Chart(ctx, { type: 'radar', data: tempData, options: { maintainAspectRatio: true, } }); }); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 配置JSON數據源 json數據是由Struts2 Action返回的一個包含溫度數據的List,實體包含以下屬性:
private int recordID; private String sensorID; private String sensorValue; private Timestamp date; --------------------- 作者:Bboy-AJ-任傑 來源:CSDN 原文:https://blog.csdn.net/u013201439/article/details/72794408 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
