xyzivan 2021-05-08 19:28 采纳率: 100%
浏览 137
已采纳

flask与html交互问题

自觉python,使用flask做后台,用于产生一个随机数组,目的是传到html中的echarts中去,使图表动起来,关键代码如下 :

FLASK:

@app.route('/',methods=["get","post"])
def hello_world():
    x = []
    x = utils.xiaoliang()
    time.sleep(1)
    print(x)
    return render_template("index.html",x=x)

HTML:
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));
    // 指定图表的配置项和数据
    var option = {
        title: {
            text: '测试'
        },
        tooltip: {},
        legend: {
            data: ['销量']
        },
        xAxis: {
            data: ["1月", "2月", "3月", "4月", "5月", "6月"]
        },
        yAxis: {},
        series: [{
            name: '销量',
            type: 'bar',
            data: [199, 73, 78, 64, 73, 83]
             {
        }]
    };
    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
    function getCharts() {
        $.ajax(
            {
                url: "/",
                type: "get",
                success: function (data) {
                    myChart.setOption({
                        series: [{

                            data: {{ x|tojson }}

                        }]
                    })
                }
            })
    }
    setInterval(getCharts,1000)

遇到问题是打开后开始会显示[199, 73, 78, 64, 73, 83] 这个数组的内容,过一秒后显示随机产生的{{ x|tojson }}这个内容,我的目标是每过一秒就产生一组随机数并显示,但是 setInterval(getCharts,1000) 好像只运行了一次。

请问这个是哪里出了问题

 

 

  • 写回答

2条回答 默认 最新

  • Go 旅城通票 2021-05-08 21:00
    关注

    不太了解Python,不过看你代码肯定是有问题的,setInterval应该请求另外一个网址获取数据类似[199, 73, 78, 64, 73, 83]这种数据,而不是直接请求首页获取整个页面,这样数据是不对的,得到的是html。

     

    @app.route('/',methods=["get","post"])
    def hello_world():
        x = []
        x = utils.xiaoliang()
        time.sleep(1)
        print(x)
        return render_template("index.html",x=x) 
    def data(): 
      x = [] 
      x = utils.xiaoliang() 
      return x#不知道是不是这样,data要返回[199, 73, 78, 64, 73, 83]这种格式的字符串

    然后ajax请求data整个地址

     function getCharts() {
            $.ajax(
                {
                    url: "/data",//
    cache:false,//禁止缓存
                    type: "get",
                    success: function (data) {
                        myChart.setOption({
                            series: [{
    
                                data: data
    
                            }]
                        })
                    }
                })
        }
        setInterval(getCharts,1000)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?