AJAX не меняет / не перенаправляет со страницы входа в систему на панель управления - PullRequest
0 голосов
/ 27 июня 2018

Я использую почтовый метод для входа в систему. Моя функция ajax успешно отправляет данные на внутренний сервер колбы [я знаю, потому что она возвращает ответ на мой ajax]. Предположительно, после получения ответа от бэкэнда, мой обработчик успеха ajax будет перемещаться / перенаправлять на страницу панели мониторинга, но ЭТОГО НЕТ! Как мне сделать так, чтобы он перемещался / перенаправлял на другую страницу / URL? Он возвращает код 200 статуса, поэтому я не знаю, почему он не отображает страницу панели инструментов.

ЧТО Я ПОПРОБОВАЛ:

Я пытался использовать window.location.href, window.location.replace, но безрезультатно, но он не работает. Я также попытался изменить метод на GET, но он все тот же. Я также установил async в false, потому что ajax не будет публиковать, если я не установлю в false .

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')

1 Ответ

0 голосов
/ 27 июня 2018

Снимите изогнутые скобки и повторите попытку:

window.location.href = "http://127.0.0.1:5000/dashboard";

Он также работает с изогнутыми скобками, поэтому просто убедитесь, что ваш ответ правильно поступил на обратный вызов success .

См. Также лучший ответ по SO .

Также должно быть ошибка вместо ошибка в качестве обратного вызова ошибки.

error: function (resp) {
    alert(resp.message);
}

jsfiddle Пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...