Javascript AJAX未更改/重定向从登录页面到仪表板[flask后端]

Javascript 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,但没有效果,仍然不起作用。我也尝试过改变方法来获得,但仍然是一样

我正在使用post方法进行登录。我的ajax函数成功地将数据发送到flask后端服务器[我知道,因为它会返回对我的ajax的响应]。据推测,在从后端收到响应后,我的ajax成功处理程序将导航/重定向到仪表板页面,但它不会!如何使其导航/重定向到另一个页面/url?它返回200状态码,因此我不知道为什么不显示仪表板页面

我尝试过的:

我尝试过使用window.location.href、window.location.replace,但没有效果,仍然不起作用。我也尝试过改变方法来获得,但仍然是一样的。我还将async设置为false,因为如果我不将其设置为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%工作。已经和邮递员测试过了。我还使用我的存储过程查询了数据库,它做得很好

这将显示登录表单

@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中所做的那样),然后看看它是否工作。如果这样做有效,您就知道来自后端的响应在某种程度上是“中断”和无效的。