我正在使用以下令牌对flask函数进行ajax调用以获取数据
@app.route("/questgen/results", methods = ['POST', 'GET'])
def fetch_results():
token = request.form.get('token')
print(token)
conn = sqlite3.connect("database.db" , timeout=20)
cur= conn.cursor()
select_query = '''SELECT processed, output_text
FROM results
WHERE token = token
'''
cur.execute(select_query)
records = cur.fetchall()
processed = ""
html = ""
for row in records:
processed = row[0]
html = row[1]
conn.close()
data = {'processed': processed, 'html' : html}
return redirect(url_for('questgen', data = data))
ajax调用如下
$.ajax({
type: "POST",
url: "/questgen/results",
data: { token: token },
datatype: "json",
success: function (data) {
if (data.processed == 1) {
$('#divresults').html(data.html);
$('#divresults').show();
hideMyModal();
clearInterval(saveInterval);
}
}
});
完整的有点长,可以在这个要点中找到,问题是它返回
TypeError:视图函数没有返回一个有效的响应。的函数返回None或不返回语句结束。
即使我已经尝试了相同的flask函数作为python函数通过使用return data
在同一数据库上,它的工作原理。我甚至试图得到token
作为函数参数,但它仍然不工作。有人能告诉我我哪里做错了吗?谢谢你
jQueryajax
调用不会自动处理重定向。您将得到一个带有301或302状态码的响应。如果确实需要重定向,则需要检查302状态返回并使用更改后的数据再次进行调用。如果您可以通过调用另一个函数在内部进行重定向,那就更好了。
尝试jsonify返回数据
from flask import Flask, jsonify, request #import this
然后用这个返回数据
return jsonify({"res": data})
在ajax中,你将得到你的数据在res
console.log(data.res) // your data
console.log(data.res.processed) // your if condition
还要检查是否需要解析响应体