【问题标题】:Why doesn't my page redirect after the post is submitted?为什么我的帖子提交后我的页面没有重定向?
【发布时间】:2020-01-12 05:15:07
【问题描述】:

以下代码似乎可以正常工作。帖子通过了,我什至在控制台上看到我要重定向到的页面的 GET 消息。但是我的浏览器没有切换到新页面说“你好”。如果我直接浏览到 /PostTest 就可以了。

我也收到“欢迎”消息。

</script>
<!DOCTYPE html>
<head>
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<html>
  <body>
<div class="row"></div>
Any Day Drinking Club's Six Nations Table Generator
<div class="row">
  <div class="input-field col s6 offset-m2 offset-l4 m4 l2">
    <input placeholder="Username" id="username" type="text" />
  </div>
  <div class="input-field col s6 m4 l2">
    <input placeholder="Password" id="password" type="password" />
  </div>
</div>
<div class="row">
  <a class="waves-effect waves-light btn" id="loginbutton">Login</a>
</div>
<script>$("#loginbutton").click(function(){
  $.ajax({
    type: 'POST',
    url: "/loginsubmit",
    success: function(){
      alert("Welcome ");
      }
    }
  )
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script></body>
</html>
from flask import Flask, request, redirect, url_for
import yaTemplates as Templates

app = Flask(__name__)

@app.route('/')
def index():
    return Templates.login()

@app.route('/PostTest')
def test():
    return 'Hello'

@app.route("/loginsubmit", methods=["POST"])
def loginsubmit():
    # + request.json["username"]
    return redirect(url_for('test'))


app.run(debug=True)

【问题讨论】:

    标签: javascript python ajax flask


    【解决方案1】:

    这是因为您使用的是 AJAX。您通过浏览器在后台以编程方式发送请求,该请求与您在屏幕上看到的内容是分开的且无关的。

    在 Flask 中,您需要使用要重定向到的 URL 进行响应。在客户端,您需要将 window.location 设置为该 URL。

    编辑:作为一个小演示,您可以打开浏览器的开发者工具(右键单击任何网页,选择“检查元素”),然后选择“控制台”选项卡,然后输入 @987654324 @ 然后按回车,您的浏览器将更改 URL 并浏览到 Google。

    from flask import Flask, request, redirect, url_for
    import yaTemplates as Templates
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return Templates.login()
    
    @app.route('/PostTest')
    def test():
        return 'Hello'
    
    @app.route("/loginsubmit", methods=["POST"])
    def loginsubmit():
        # + request.json["username"]
        return url_for('test')
    
    
    app.run(debug=True)
    

    客户端:

    <script>
      $("#loginbutton").click(function () {
        $.ajax({
          type: 'POST',
          url: "/loginsubmit",
          success: function (url) {
            window.location = url;
          }
        })
      });
    </script>
    

    【讨论】:

    • 对!这就说得通了!谢谢
    猜你喜欢
    • 2018-10-31
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    相关资源
    最近更新 更多