Перенаправление колбы не работает, но я не получаю никаких ошибок - PullRequest
0 голосов
/ 08 июля 2019

Я использую сервер, который проверяет форму и создает нового пользователя, а затем ему нужно вернуться на домашнюю страницу, но он не

Я запускаю приложение python flask с ajax, используемым для проверки форм

Вот файлы app.py и ajax.js

app.py

@app.route("/home")
def home():
    return render_template("home.html")


@app.route("/register", methods=["GET", "POST"])
def register():
    return render_template("register.html")


@app.route("/registerUser", methods=["GET", "POST"])
def register_user():
    email = request.form["email"]
    password = request.form["password"]
    password_length = len(password)
    fname = request.form["fname"]
    lname = request.form["lname"]
    adress = request.form["adress"]
    zip = request.form["zip"]
    city = request.form["city"]
    if email and password and fname and lname and adress and zip and city:
        if re.match(r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$", email):
            if password_length < 6:
                return jsonify({"password1": "Lozinka mora imati najmanje 6 znakova"})
            else:
                if User.query.filter_by(email=email).first():
                    return jsonify({"email2": "Ta email adresa se već koristi"})
                else:
                    user = User(fname=fname, sname=lname, adress=adress, city=city, zip=zip, password=password, email=email)
                    db.session.add(user)
                    db.session.commit()
                    print("Success")
                    return redirect(url_for("index"), code=302)
        else:
            return jsonify({"email1": "Unesite ispravnu email adresu"})
    return jsonify({"error": "Popunite sve podatke"})

ajax.js

$(document).ready(function () {
    $("#btn").click(function (event) {
        let email = $("#email").val();
        let password = $("#password").val();
        let password_length = $("#password").length;
        let fname = $("#fname").val();
        let lname = $("#lname").val();
        let adress = $("#adress").val();
        let zip = $("#zip").val();
        let city = $("#city").val();
        $.ajax({
            data: {
                email: email, password: password, fname: fname, lname: lname,
                adress: adress, zip: zip, city: city, password_length: password_length
            },
            type: "POST",
            url: "/registerUser"
        })
            .done(function (data) {
                if (data.error) {
                    sweetAlert("Neuspješna prijava", "Popunite sve podatke", "error");
                }
                else {
                    $("#alert1").text(data.email1).css("position", "relative");
                    $("#alert").text(data.password1).css("position", "relative");
                    $("#alert1").text(data.email2).css("position", "relative")
                }
            });
        event.preventDefault()
    });
});

Я не получаю никаких ошибок, но я не перенаправлен на домашнюю страницу

127.0.0.1 - - [08/Jul/2019 12:02:02] "POST /registerUser HTTP/1.1" 302 -
Success
127.0.0.1 - - [08/Jul/2019 12:02:02] "GET /home HTTP/1.1" 200 -

Может кто-нибудь помочь мне, пожалуйста!

1 Ответ

0 голосов
/ 08 июля 2019

Перенаправление на вызовы Ajax не работает, браузер не обрабатывает это.

Вместо этого вы можете заменить:

return redirect(url_for("index"), code=302)

по

return jsonify({"redirect": "/home"})

перенаправление вручную, когда ваш вызов ajax успешно завершен с:

if (data.redirect) {
    window.location.href = data.redirect;
}
...