最近開發項目用到echarts圖表展示數據信息,需要調用后台接口,寫一篇博客來記錄一下實現過程,末尾附源碼
首先准備一個json文件echarts.json(名字無所謂),用來模擬從后台獲取數據
第二步上echarts官網下載,或直接引用生成圖表用到的js,這里給出官網:https://www.echartsjs.com/index.html
然后在頁面直接引用
這里給出echarts.js的下載鏈接:https://echarts.baidu.com/dist/echarts.min.js
第三步在body中准備一個容器,用來顯示圖表
緊接着在js中初始化echarts對象,直接上代碼
<script type="text/javascript"> var container = document.getElementById('container'); // 初始化加載對象myContainer var myContainer = echarts.init(container); //未獲取數據前,顯示loading加載動畫 myContainer.showLoading(); function bindData() { //為了效果明顯,我們做了延遲讀取數據 setTimeout(function() { //異步加載數據,get請求我們剛剛准備的json文件,正式開發中調用相應的接口 $.get('js/echarts.json', function(res) { console.log(res) //獲取數據后,隱藏loading動畫 myContainer.hideLoading(); myContainer.setOption(option = { title: { text: 'echartsLoading加載' }, tooltip: {}, legend: {}, // xAxis代表x軸的數據 xAxis: { data: res.name, // 字段對應從json里面的字段 }, // yAxis代表y軸的數據,不寫會自動適應數據 yAxis: {}, // series代表鼠標懸浮到圖標上時提示的對應信息 series: [{ name: '訪問量', type: 'bar', data: res.data, // 字段對應從json里面的字段 }] }); }) }, 2000) } bindData(); </script>
看到這里如果能生成一個柱狀圖,那么恭喜你已經可以從后台獲取數據了
如果還沒有的話就看全部代碼吧,加油哦
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>echarts-異步加載數據</title> <link rel="stylesheet" href="11.scss"> <script src="js/eacher.min.js" type="text/javascript" charset="utf-8"></script> <script src="js/new_file.js" type="text/javascript" charset="utf-8"></script> <style> #container{ width: 500px; height: 400px; border: 1px solid #ccc; /*background-color: #ccc;*/ } </style> </head> <body> <div id="container"></div> <!-- --> <script type="text/javascript"> var container = document.getElementById('container'); // 初始化加載對象myContainer var myContainer = echarts.init(container); //未獲取數據前,顯示loading加載動畫 myContainer.showLoading(); function bindData() { //為了效果明顯,我們做了延遲讀取數據 setTimeout(function() { //異步加載數據,get請求我們剛剛准備的json文件,正式開發中調用相應的接口 $.get('js/echarts.json', function(res) { console.log(res) //獲取數據后,隱藏loading動畫 myContainer.hideLoading(); myContainer.setOption(option = { title: { text: 'echartsLoading加載' }, tooltip: {}, legend: {}, // xAxis代表x軸的數據 xAxis: { data: res.name, // 字段對應從json里面的字段 }, // yAxis代表y軸的數據,不寫會自動適應數據 yAxis: {}, // series代表鼠標懸浮到圖標上時提示的對應信息 series: [{ name: '訪問量', type: 'bar', data: res.data, // 字段對應從json里面的字段 }] }); }) }, 2000) } bindData(); </script> </body> </html>
json文件
{ "name":["iso","english","china","ufo","seo"], "data":[400,200,300,100,11] }
效果圖