使用flask从python脚本定期更新HTML中的数据

时间:2016-11-22 04:29:41

标签: javascript python ajax flask

我正在尝试使用Flask定期将当前时间推送到HTML页面。 (这不是我的最终目标,它只是我正在尝试解决的问题的一个非常简单的版本。)我似乎无法让JavaScript继续从Python脚本请求更新的数据。我究竟做错了什么?这段代码主要是根据之前发布的类似问题拼凑而成的,但我仍然无法弄清楚如何让它工作。

Python代码

from flask import Flask, render_template
from datetime import datetime

app = Flask(__name__)

@app.route("/")
def template_test():
    return render_template('template.html')

@app.route('/get_time', methods= ['GET', 'POST'])
def stuff():
    result = datetime.utcnow()
    return jsonify(result=result)

if __name__ == '__main__':
    app.run(debug=True)

HTML:

<html>
  <body>
    <p id="result">Time goes here</p>
    <script>
    setInterval(
      function()
      {
         $.getJSON(
            $SCRIPT_ROOT + '/get_time',
            {},                     
            function(data)
            {
              $("#result").text(data.result);
            });
      },
      500);
      </script>
  </body>
</html>

1 个答案:

答案 0 :(得分:1)

那是你的HTML吗?我问,因为虽然你的脚本看起来没问题,但你使用的是jQuery命令,但似乎并没有导入jQuery库本身。

在文件顶部的<head><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script></head><html>标记之间添加<body>会有所帮助。

此外,在这种情况下并不是真的需要这么简单,但是使用jQuery将脚本封装在$(document).ready(function() { your_script_here });中是很好的做法 - 这将在文档完全加载后执行它,因此您不会冒险尝试对尚未在更复杂的文档中加载或渲染的元素执行操作。