刷新Javascript以从Flask获取新值

Refresh Javascript to get new values from Flask

本文关键字:获取 新值 Flask 以从 Javascript 刷新      更新时间:2023-09-26

我需要autorefresh下面的load函数,这样我就不必手动刷新整个页面,仍然得到my_value的新值。如果我重新加载页面,图表会重新开始,这是我不想要的。

我认为这每5秒返回不同的值,但每5秒只返回相同的值。

我如何刷新这个脚本并每5秒更新它的值?

谁能告诉我为什么这不是更新数据?

谁能告诉我为什么这不是更新数据?

$(document).ready(function() {
    Highcharts.setOptions({
        global: {
            useUTC: false
        }
    });
    $(function() {
        var chart;
        $('#my_id').highcharts({
            chart: {
                type: 'spline',
                animation: Highcharts.svg, // don't animate in old IE
                marginRight: 10,
                events: {
                    load: function() {
                        // set up the updating of the chart each second
                        var series = this.series[0];
                        setInterval(function() {
                            var x = (new Date()).getTime();
                            // var y = {{my_value}}; // Math.random() * 100;
                            // series.addPoint([x, y], true, true);
                            $.ajax({
                                type: "GET",
                                url: "/get_data",
                                data: data, // your "template" data goes here
                                success: function(my_value) {
                                    var y = my_value;
                                    series.addPoint([x, y], true, true);
                                }
                            });
                        }, 5000);
                    }
                }
            }
        });
    });
});
下面是Flask脚本:
conn = MySQLdb.connect(host=host,
                       user=username,
                       passwd=password,
                       db=database,
                       port=port)

@app.route('/', methods=['GET'])
def index():
    request.args.get('key', '')
    df = sqlio.read_sql(qry1, conn)
    value = df['count'][0]
    return render_template('index.html', my_value=value)
@app.route('/get_data', methods=['GET'])
def get_data():
    df = sqlio.read_sql(qry1, conn)
    value = df['count'][0]
    return value

if __name__ == '__main__':
    app.run(
        port=1114,
        host='0.0.0.0'
    )

您可以通过ajax调用来获取数据:

var x = (new Date()).getTime();
// get data from python script
$.ajax({
  type: "GET",
  url: "/get_data",
  data: data, // your "template" data goes here
  success: function(my_value) {
     var y = my_value;
     series.addPoint([x, y], true, true);
  }
});

在你的服务器中让Flask获取数据:

@app.route('/get_data', methods=['GET'])
def get_data():
    df = sqlio.read_sql(query, conn)
    value = df['my_column'][0]
    return value