【JavaScript】Echarts+JQuery+AJAX 异步请求刷新图表
# 引入 Echarts、JQuery
本地、CDN 都行
<script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts-en.common.js"></script>
<script src="https://cdn.bootcss.com/jquery/3.4.0/jquery.js"></script>
# 初始化 Echarts 实例
官方教程是一个柱状图,这里我用以一个折线图演示,道理都一样。
# 先上代码
<!DOCTYPE html>
<html>
<head>
<title>Echarts+JQuery 异步请求刷新图表</title>
<meta charset="utf-8">
<!-- 第一步 引入echarts JQuery -->
<!-- 引入echarts -->
<script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts-en.common.js"></script>
<!-- 引入JQuery -->
<script src="https://cdn.bootcss.com/jquery/3.4.0/jquery.js"></script>
</head>
<body>
<!-- 初始化ECharts实例 -->
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;margin: 0 auto;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 异步刷新折线图实例',
x: 'center'
},
tooltip: {},
xAxis: {
data: [] //与折线的数据点数据对应的X轴数据
},
yAxis: {},
series: [] //折线的数据点数据
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
// 显示等待画面
myChart.showLoading();
</script>
</body>
</html>
# 效果
折线图中的数据,我们用 ajax 异步请求获取,因此初始化时,使用 myChart.showLoading();
动画,让用户等待异步请求响应。
# 添加 AJAX 代码
在 myChart.showLoading();
下一行, </script>
上一行的位置
// 2. 调用了ajaxRequest()方法
// 封装一个发送ajax请求、响应、加载数据到图表的方法函数
function ajaxRequest() {
//声明用于存放响应数据的数组
var series_data = [];
var xAxis_data = [];
//声明 用于请求时的请求参数 JSON格式
var args = {"name": "NipGeihou"};
// 3. 向服务器发送请求,获取JSON数据 这里的`money.json`是一个静态文件,实际使用中,应为一个服务器api地址
//GET请求来获得 JSON 数据 (url,请求参数args,请求成功时运行的函数)
$.getJSON("money.json", args, function (data) {
// 4.存在data时,遍历data中存放数据数组,这里第一个data是返回的json数据,第二个data是json数据里的key
if (data) {
for (var i = 0; i < data.data.length; i++) {
series_data.push(data.data[i].money);
xAxis_data.push(data.data[i].month);
}
//关闭等待动画
myChart.hideLoading();
//加载数据到图表
myChart.setOption({
xAxis: {
data: xAxis_data
},
series: [{
// 根据名字对应到相应的系列
name: '工资',
type:'line',
data: series_data
}]
});
}
});
}
// 1. 从这开始执行
$(function () {
//用于页面打开时的首次刷新
ajaxRequest();
//定时器 5秒后执行定时执行
setInterval(function () {
ajaxRequest();
}, 5 * 1000); //每5秒执行
});
用来演示的 money.json
内容
{
"data":[
{
"name":"NipGeihou",
"money":"8000",
"month":"2019-01"
},
{
"name":"NipGeihou",
"money":"9000",
"month":"2019-02"
},
{
"name":"NipGeihou",
"money":"10000",
"month":"2019-03"
},
{
"name":"NipGeihou",
"money":"11000",
"month":"2019-04"
}
]
}
# 总结
写的可能不好,因为我也是刚接触 AJAX,JQuery 也只是接触 AJAX 时用到,之前没有学过,因此说得可能不是很对,没学 AJAX 之前,找网上 echarts 异步刷新的教程,也是看不懂,如果你之前没有学过 AJAX 的话,可能你也会和我一样看得不是很懂,那么我建议你先学习一下 AJAX 的基本用法,这里我推荐一个《尚硅谷 Ajax 教程》 (opens new window)的视频教程,视频有点旧,但内容还是可以的。
但总的来讲,还是比较容易实现的, getJSON()
请求,获取到 JSON 数据,无需解析,直接使用 data.xxx
即可调用
上次更新: 2024/03/11, 22:37:05