首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flask flash和redirect -在devtools中显示响应,但没有页面加载

Flask flash和redirect -在devtools中显示响应,但没有页面加载
EN

Stack Overflow用户
提问于 2015-08-25 02:53:06
回答 1查看 1K关注 0票数 0

新来这里..。我的问题是,我正在尝试检查响应是否为空,如果是,则闪现一条消息。通过下面的代码,我可以看到重定向通过了,随后的GET在开发工具中用正确的html响应,但是页面没有加载,它停留在当前页面(也是layout.html,不确定这是不是一个问题,我的目的只是简单地重新加载这个页面来显示闪烁的消息)。

相关烧瓶:

代码语言:javascript
复制
@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的相关部分,以避免文本墙的

代码语言:javascript
复制
<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:

代码语言:javascript
复制
$(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')
            }
        })
    })
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-25 09:22:46

在我看来,您的代码看起来像是在重定向AJAX调用。从本质上讲,AJAX调用将加载索引,而不是浏览器本身(这正是您想要的)。

在AJAX中,尝试将错误函数更改为

代码语言:javascript
复制
error: function() {
    document.location.reload()
}

然后,将if not data_list块更改为:

代码语言:javascript
复制
if not data_list:
    flash('No balances for selected client/dates')
    return Response(status=500)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32189620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档