心痕610 2021-09-26 10:09 采纳率: 58.3%
浏览 116
已结题

html从mysql之中无法实时调出数据

各位有什么好的方法,从数据库调出数据实时显示到php页面上面折线图吗?
我通过定时器定时向后台发送请求,但是它每次刷新都会把以前的数据全部显示出来。或者我如何才能把以前的那部分数据去掉了。

img


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数据库图形</title>
</head>
<body>
    <div id="main" style="width: 600px;height:400px;"></div>
    <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script type="text/javascript">
        //初始化
        var myChart = echarts.init(document.getElementById('main'));
        myChart.setOption({
            title: {
                text: 'test'
            },
            tooltip: {},
            legend: {
                data: ['销量']
            },
            xAxis: {
                data: []
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: []
            }]
        });
        //数据加载完之前先显示一段简单的loading动画
        //名字数组(实际用来盛放X轴坐标值)
        var names = [];
        //value数组(实际用来盛放Y坐标值)  
        var nums = [];
        function getJson() {
            console.log(1)
            $.ajax({
                type: "get",
                async: true,
                url: "1.php",
                data: {},
                //返回数据形式为json
                dataType: "json",
                //请求成功时执行该函数内容,result即为服务器返回的json对象       
                success: function (result) {
                    console.log(result)
                    // alert("连接成功");
                    if (result) {
                        for (var i = 0; i < result.length; i++) {
                            //挨个取出name并填入名字数组,这个xname是根据你在php那发过来的列表来的,下面那个ysh也是
                            names.push(result[i].xname);
                        }
                        for (var i = 0; i < result.length; i++) {
                            //挨个取出value并填入value数组
                            nums.push(result[i].ysh);
                        }
                        //数据都存进去了,就不需要加载动画了,所以这里把他隐藏
                        myChart.hideLoading();
                        //将图表渲染进容器里
                        myChart.setOption({
                            xAxis: {
                                data: names
                            },
                            series: [{
                                name: '销量', data: nums
                            }]
                        });
                    }
                },
                error: function (errorMsg) {
                    //请求失败时执行该函数
                    alert("图表请求数据失败!");
                    myChart.hideLoading();
                    console.log(errorMsg)
                }
            })
        }
        getJson();
     setInterval("getJson()",5000)
    </script>
</body>
</html>
  • 写回答

3条回答 默认 最新

  • 三火Sunfire 2021-09-27 12:03
    关注

    1.在push names时加个判断轮询时就不会一直往屁股后面加柱子了

    if (!names.length) {
       for (var i = 0; i < result.length; i++) {
          names.push(result[i].xname);
       }
    }
    

    2.把nums定义成局部变量,这样就可以保证图表内的数组是最新的且不会发生闪烁

    var nums = []
    for (var i = 0; i < result.length; i++) {
        nums.push(result[i].ysh);
    }
    

    望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月5日
  • 已采纳回答 9月27日
  • 赞助了问题酬金 9月27日
  • 创建了问题 9月26日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改