新来这里..。我的问题是,我正在尝试检查响应是否为空,如果是,则闪现一条消息。通过下面的代码,我可以看到重定向通过了,随后的GET在开发工具中用正确的html响应,但是页面没有加载,它停留在当前页面(也是layout.html,不确定这是不是一个问题,我的目的只是简单地重新加载这个页面来显示闪烁的消息)。
相关烧瓶:
@app.route('/')
def hello():
return render_template('layout.html')
@app.route('/query',methods=['POST'])
def query():
start=request.json['start']
end=request.json['end']
name=request.json['name']
sql="select some stuff"
data_list = []
stuff=cur.execute(sql)
for row in stuff:
data_list.append(row[0])
if not data_list:
flash('No balances for selected client/dates')
return redirect(url_for('hello'))
return json.dumps(data_list)
if __name__ == '__main__':
app.secret_key = 'secretkeyhere'
app.run(debug=True,host='127.0.0.1',port=8000)
html的相关部分,以避免文本墙的
<body>
<div class="container">
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<div class="flashed_message" role="alert">
<button type="button" class="close" data-dismiss="alert" aria- label="Close"><span aria-hidden="true">×</span></button>
{{message}}
</div>
{% endfor %}
{% endif %}
{% endwith %}
{% block content %}{% endblock %}
和最后..。AJAX:
$(function(){
$("[type=submit]").click(
function(){
// event.preventDefault()
$(".container").hide()
var startdate=$('#datetimepicker1').val()
var enddate=$('#datetimepicker2').val()
var name=$('#mhh').val()
$.ajax({
type: "POST",
url: $SCRIPT_ROOT + "/query",
contentType: "application/json; charset=utf-8",
dataType:"json",
success: function(response) {
console.log('worked!')
return {'start':response.start,'end':response.end,'name':response.name}
},
error:function(){
console.log('didn\'t work')
}
})
})
});
发布于 2015-08-25 09:22:46
在我看来,您的代码看起来像是在重定向AJAX调用。从本质上讲,AJAX调用将加载索引,而不是浏览器本身(这正是您想要的)。
在AJAX中,尝试将错误函数更改为
error: function() {
document.location.reload()
}
然后,将if not data_list块更改为:
if not data_list:
flash('No balances for selected client/dates')
return Response(status=500)
https://stackoverflow.com/questions/32189620
复制相似问题