【发布时间】:2017-08-16 18:42:45
【问题描述】:
我在下面发布了我的烧瓶代码。我想每 60 秒刷新一次表 data。 Setinterval 函数包含在 html 中。但它并不令人耳目一新。我没有弄清楚 ajax/Javascript 中的确切问题。请有人可以帮助解决这个问题。
App.py:
app = Flask(__name__)
app.config['SECRET_KEY'] = 'dsfd'
mysql = MySQL()
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = 'pwd'
app.config['MYSQL_DATABASE_DB'] = 'db'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)
eachcur = ["A","B","C","D"]
@app.route('/', methods= ['GET'])
def display_deals():
conn = mysql.connect()
c = conn.cursor()
data = ((),)
for curren in eachcur:
query = "SELECT * from "+curren+" ORDER BY Currid DESC LIMIT 1"
c.execute(query)
data = data + c.fetchall()
conn.close()
return render_template("dashboard.html", data=data)
if __name__ == '__main__':
app.run(debug=True)
dashboard.html:
<!doctype html>
<html>
<body>
<script>
setInterval(function() {
$.ajax({
type: "POST",
url: "/",
})
.done(function( data ) {
$("#table-box").val(data)
});
}, 1000 * 60);
</script>
<table border="2" cellpadding="4" cellspacing="5" id="table-box" >
{% for row in data %}
<tr>
{% for d in row %}
<td>{{ d }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
</body>
</html>
控制台输出:
jquery.min.js:4 XHR finished loading: POST "http://localhost:5000/".
send @ jquery.min.js:4
ajax @ jquery.min.js:4
(anonymous) @ (index):7
setInterval (async)
(anonymous) @ (index):6
17:21:45.516 jquery.min.js:4 [Violation] 'load' handler took 334ms
【问题讨论】:
-
stackoverflow的重点不是为你提供代码。有几种方法可以实现这一点,最简单的方法是使用简单的
<META>标签来重新加载整个页面。我相信你可以使用谷歌找到它。其他方法包括仅刷新表数据的 AJAX 调用。 -
寻求调试帮助的问题必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:游览,并阅读如何提问。我可以询问哪些主题
-
@Roy Prins:感谢您的建议。我已经改写了问题。现在我认为有人可以找出 html 中的错误。
-
@serdar.sanri :如果您不理解问题,请不要发表评论。每个人都不是像你这样的专家。希望你能理解。请鼓励新手提出问题。谢谢。
标签: javascript python ajax flask dom-events