两种echarts简单异步数据导引入方法

两种echarts异步数据导引入方法

1、根据echarts官方网站提供的jQuery方法
echarts相关异步数据官方教程
data.json文件中存放的数据

{
    "categories": ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"],
    "values": [5, 20, 36, 10, 10, 20]
}

方法一:
①将加载数据与准备图表容器放在一起

<script>
var myChart = echarts.init(document.getElementById('main'));
$.get('data.json').done(function(data) {//获得存放在data.json中的json数据
  myChart.setOption({
    title: {
      text: '异步数据加载示例'
    },
    tooltip: {},
    legend: {},
    xAxis: {
      //引入json数据中的categories一栏数据
      data: data.categories
    },
    yAxis: {},
    series: [
      {
        name: '销量',
        type: 'bar',
        //引入values数据
        data: data.values
      }
    ]
  });
});
</script>

方法二:
②先准备一个空白图表容器,然后在进行异步数据的加载

<script>
var myChart=echarts.init(document.getElementById('main'));
//显示空白坐标轴与标题
myChart.setOption({
  title: {
    text: '异步数据加载示例'
  },
  tooltip: {},
  legend: {
    data: ['销量']
  },
  xAxis: {
    data: []
  },
  yAxis: {},
  series: [
    {
      name: '销量',
      type: 'bar',
      data: []
    }
  ]
});

//引入异步数据
$.get('data.json').done(function(data){
    myChart.setOption({
        xAxis:{
            data:data.categories
        },
        series:[{
            data:data.values
        }]
    })
});
</script>

其实当数据加载时间过长时,可以设置一个加载动画提高用户体验

myChart.showLoading();
$.get('data.json').done(function (data) {
    myChart.hideLoading();
    myChart.setOption(...);});

2、用Ajax+Express后台服务器方法
index.html客户端的写法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="echarts.min.js"></script>
    <script src='jQuery-3.6.0.min.js'></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>
<script>
var myChart=echarts.init(document.getElementById('main'));
//显示空白坐标轴与标题
myChart.setOption({
  title: {
    text: '异步数据加载示例'
  },
  tooltip: {},
  legend: {
    data: ['销量']
  },
  xAxis: {
    data: []
  },
  yAxis: {},
  series: [
    {
      name: '销量',
      type: 'bar',
      data: []
    }
  ]
});


//使用Ajax方法向后台请求数据
$.ajax({
    url:'http://127.0.0.1:8000/data',
    method:'GET',
    dataType:'json',
    success:function(data){
        //console.log(data);
        //获取数据成功,将其填入图表中
        myChart.setOption({
            xAxis:{
                data:data.categories
            },
            series:[{
                data:data.values
            }]
        })
    },
    error:function(){
        console.log("error!")
    }
});
</script>
</body>
</html>

server.js的写法

const express=require('express');
const app=express();
app.all("/data",(req,res)=>{
     res.setHeader("Access-Control-Allow-Origin","*");
     res.setHeader("Access-Control-Allow-Headers","*");
     let data={
         "categories": ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"],
         "values": [5, 20, 36, 10, 10, 20]
     };
    //将数据转化为字符串格式发送
     data=JSON.stringify(data);
        //用.end()方法,不然会报错
     res.end(data);
});
app.listen(8000,()=>{
     console.log("服务启动,8000端口监听中...");
});

重点是对json数据的声明要用let,不然会报错…
这种方法还可以扩展下用express框架传入外部json文档中的数据,来适合大数据量的图表制作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值