[英]AJAX not changing/redirecting from login page to dashboard [flask backend]
我正在使用post方法进行登录。 我的ajax函数将数据成功发送到我的Flask后端服务器[我知道,因为它返回了对我的ajax的响应]。 据说,从后端接收到响应后,我的ajax成功处理程序将导航/重定向到仪表板页面,但事实并非如此! 如何使其导航/重定向到另一个页面/ URL?它返回200状态代码,所以我不知道为什么它不显示仪表板页面。
我尝试过的内容:
我尝试使用window.location.href,window.location.replace,但无济于事,仍然无法正常工作。 我也尝试过将方法更改为GET,但方法仍然相同。 我也将async设置为false,因为如果我不将ajax设置为false,ajax将不会发布 。
AJAX
$.ajax({
type: "POST",
url: 'http://127.0.0.1:5000/processlogin',
data: JSON.stringify(loginobject),
contentType: "application/json;charset=utf-8",
async: false,
success: function (resp) {
window.location.href = ("http://127.0.0.1:5000/dashboard");
},//success
failure: function (resp) {
alert(resp.message);
}
});
后端烧瓶功能此功能可100%使用。 已经使用POSTMAN对其进行了测试。 我还使用存储过程查询了数据库,并且运行良好。
这将显示登录表单
@app.route('/', methods=['GET','POST'])
def login():
return render_template('login.html')
这将处理ajax的已发送数据。 简而言之,这是ajax与之通信的功能
@app.route('/processlogin', methods=['POST'])
def processlogin():
loginobject = request.get_json(force=True)
username = loginobject['username']
password = loginobject['password']
try:
dbpassword = callstoredproc("getpassword", (username,))[0][0]
if dbpassword == 'null':
return jsonify({'status':'error', 'message':'Username does not exist!'})
elif bcrypt.verify(password, dbpassword) == True:
return jsonify({'status':'ok'})
except Exception as e:
print(e)
这就是我要显示的内容:仪表板html
@app.route('/dashboard', methods=['GET', 'POST'])
def dashboard():
return render_template('dashboard.html')
卸下弯曲的支架,然后重试:
window.location.href = "http://127.0.0.1:5000/dashboard";
它也可以与尖括号一起使用,因此只需确保您的响应正确到达成功回调即可。
另请参见关于SO的最佳答案 。
它也应该是错误而不是失败的错误回调。
error: function (resp) {
alert(resp.message);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.