Javascript AJAX未更改/重定向从登录页面到仪表板[flask后端]
我正在使用post方法进行登录。我的ajax函数成功地将数据发送到flask后端服务器[我知道,因为它会返回对我的ajax的响应]。据推测,在从后端收到响应后,我的ajax成功处理程序将导航/重定向到仪表板页面,但它不会!如何使其导航/重定向到另一个页面/url?它返回200状态码,因此我不知道为什么不显示仪表板页面 我尝试过的: 我尝试过使用window.location.href、window.location.replace,但没有效果,仍然不起作用。我也尝试过改变方法来获得,但仍然是一样的。我还将async设置为false,因为如果我不将其设置为false,ajax将不会发布 AJAXJavascript AJAX未更改/重定向从登录页面到仪表板[flask后端],javascript,python,jquery,json,ajax,Javascript,Python,Jquery,Json,Ajax,我正在使用post方法进行登录。我的ajax函数成功地将数据发送到flask后端服务器[我知道,因为它会返回对我的ajax的响应]。据推测,在从后端收到响应后,我的ajax成功处理程序将导航/重定向到仪表板页面,但它不会!如何使其导航/重定向到另一个页面/url?它返回200状态码,因此我不知道为什么不显示仪表板页面 我尝试过的: 我尝试过使用window.location.href、window.location.replace,但没有效果,仍然不起作用。我也尝试过改变方法来获得,但仍然是一样
$.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%工作。已经和邮递员测试过了。我还使用我的存储过程查询了数据库,它做得很好
这将显示登录表单
@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";
它也适用于曲线括号,因此只需确保您的响应正确到达成功回调
error: function (resp) {
alert(resp.message);
}
另见
作为错误回调,它也应该是错误,而不是失败
error: function (resp) {
alert(resp.message);
}
对“success”回调调用alert()/console.log(),并查看是否显示该回调以确保您正在返回correctly@Michael我已经试过了。。。当我输入错误的密码时,它会转到eerror处理程序,但当我输入正确的密码时,它不会导航到我在成功处理程序中指定的页面,而是会发出“未定义”的警报,但在控制台中,它会返回状态代码200尝试简化您的用例。例如,将对后端的ajax调用替换为一个虚拟RESTAPI(就像我在JSFIDLE中所做的那样),然后看看它是否工作。如果这样做有效,您就知道来自后端的响应在某种程度上是“中断”和无效的。