【发布时间】:2020-04-30 05:28:34
【问题描述】:
我正在尝试在网页上创建一个信号,并根据从数据库中检索到的值显示绿色或红色。但是当我在 10 秒后发送请求时,页面似乎被冻结并且没有响应。我无法找出哪里出错了,请帮我解决这个问题。
Techstack 使用 - HTML、CSS、Js、Ajax、Python(Flask) 和 PostgreSQL
function latest_status(){
var header = document.getElementById("circle");
var tbid = $('#mtb').val();
var signal = $.ajax({
type: 'POST',
url: '/status?tbid='+tbid,
data: "",
contentType: false,
dataType: "json",
async:false,
cache: false,
processData: false,
success: function(data) {
},
//error: function(data) {
// alert("Data Not received !!");
//},
complete: function(data){
setTimeout(latest_status, 10000);
}
});
var signaldata = JSON.parse(signal.responseText);
var signalvalue = signaldata[0].signalvalue;
var datevalue = signaldata[0].date;
if(signalvalue == '1')
{
header.style.background = "green";
}
else
{
header.style.background = "red";
}
};
setTimeout(latest_status, 10000);
烧瓶代码:
from flask import Flask, redirect, url_for, request, render_template
from flask_socketio import SocketIO
from werkzeug.utils import secure_filename
from flask import jsonify
import json
import eventlet
from collections import OrderedDict
import psycopg2
app = Flask(__name__)
app.config['SECRET_KEY'] = 'project!'
socketio = SocketIO(app)
@app.route('/status', methods = ['POST', 'GET'])
def latest_status():
tbid = request.args['tbid']
if request.method == 'POST':
connection = psycopg2.connect(user = "postgres", password = "abcd",host = "localhost",port = "5432", database="mydb")
cursor = connection.cursor()
sql1 = "Select * from hst_vw where tb_id = %s"
record_to_update = (tbid,)
cursor.execute(sql1,record_to_update)
record = cursor.fetchall()
connection.commit()
status_arr = []
for i in record:
hs = OrderedDict()
hs["signalvalue"] = i[0]
hs["date"] = i[1]
hs["tbid"] = i[2]
status_arr.append(hs)
json_date = json.dumps(status_arr, default = str)
return json_date
if __name__ == '__main__':
socketio.run(app)
【问题讨论】:
-
你能告诉我们你的FLASK代码吗?
-
@Tobin 我已经添加了烧瓶代码,请看一下。请帮助我解决这个冻结我的屏幕并需要很长时间才能响应的问题
标签: javascript python jquery ajax flask