来自ajaxtowards烧瓶的发布请求后页面未呈现

时间:2021-07-17 22:27:38

标签: javascript python ajax flask

我正在使用 FLASK + Ajax 来制作登录页面。如果用户名和密码正确,它应该重定向到另一个页面。

我做了一个表格。并且请求成功通过。我可以在 python ( flask ) 中捕获数据。但我的问题是在呈现页面后没有发生重定向。使用 render_template

这里是请求root url时重定向到登录页面

@app.route('/')
def OperationPage():
    log_screenprint('User Has Requested / URL >> Redirect to /login')
    return  redirect(url_for('page_login'))

这是验证用户名和密码的功能。然后它应该重定向到下一页

@app.route('/login' , methods=["POST","GET"])
def page_login() :
    log_screenprint('Got Request From GUI User to login With Cred.')

    for key,value in securityFile.items() :
        dbUser = securityFile[key]['username']
        dbpass = securityFile[key]['defaultpass']

        username = request.form.get('username')
        password = request.form.get('password')
        sessionId = request.form.get('session')

        if dbUser == username :
            if dbpass == password :
                socketio.emit('userDb' , json.dumps(securityFile[key]) , session = sessionId)
                return render_template('/index.html' ,  title= 'Home Page')

    return render_template('/login.html')

这是我在 javascript 中使用的请求。

  $('#login-form').submit(function (e) {
  e.preventDefault();
  var username = document.querySelector('.login-username').value
  var password = document.querySelector('.login-password').value
    $.ajax({
      url: '/login',
      data: {
              username: username,
              password: password,
              session : (socket.id),
          },
        type: 'POST',
        success: function (response) {
          console.log('response');
        },
        error: function (error) {
          console.log(error);
        }
      });
  });

问题又来了。甚至正确的用户名和密码。 index.html 未呈现

1 个答案:

答案 0 :(得分:0)

在使用 ajax 时,您负责如何处理服务器响应。服务器返回的响应是您需要向用户显示的 html 网页(index.html)。在您的情况下,您只是将“响应”一词打印到网页控制台:

success: function (response) {
  console.log('response');
},

我建议以其他方式进行。我会创建另一条路线:

@app.route('/index')
def index():
    return render_template('/index.html' ,  title= 'Home Page')

并在服务器响应成功时将用户重定向到它。

success: function (response) {
  window.location.replace('index')
},

它还需要对认证功能进行一些更改,因为您的服务器每次都返回成功的 http 代码。您可以使用以下内容:

return "", 200

登录成功,以及

return "", 401

失败。