Почему форма не отправляется, когда данные введены верно (javascript, ajax)?
Есть форма входа:
{% block content %}
<form method="POST" class="login-form" id="login-form">
{{ login_form.hidden_tag() }}
<div class="form-group">
{{ login_form.name.label }}
{{ login_form.name(class="form-control", id="login_form_name", placeholder="Name") }}
</div>
<div class="form-group">
{{ login_form.password.label }}
{{ login_form.password(class="form-control", id="login_form_password", placeholder="Password") }}
<p id="incorrect-data-error" class="error-message" style="margin-top: 30px;"></p>
</div>
<div class="form-group">
{{ login_form.recaptcha.label }}
{{ login_form.recaptcha(class="g-recaptcha") }}
<p id="recaptcha-error" class="error-message" style="margin-top: 30px;"></p>
</div>
<div class="form-group">
{{ login_form.submit(class="btn btn-primary", id="login-form-submit") }}
<p id="session-exists-error" class="error-message" style="margin-top: 30px;"></p>
</div>
</form>
<p class="register_account_message">Don't have an account? <a href="/signup">Signup here</a></p>
{% endblock %}
Есть js-скрипт, который связан с этой формой. Он, с помощью ajax, отправляет данные с формы на сервер после нажатия кнопки Log In:
$(document).ready(function() {
$("#login-form").on("submit", function(event) {
event.preventDefault();
var formData = $(this).serialize();
$.ajax({
type: "POST",
url: "/check_login_user_credentials",
data: formData,
success: function(response) {
if (response.response === 'Incorrect data') {
$("#incorrect-data-error").text('Incorrect username or password');
} else if (response.response === 'Session already exists') {
$("#session-exists-error").text('This account is already in use. Please try again later.');
} else if (response.response === 'Allow') {
$("#incorrect-data-error").text('');
$("#login-form")[0].submit();
}
}
});
});
});
Маршрут, на который отправляются данные:
@app1.route('/check_login_user_credentials', methods=['GET', 'POST'])
def check_login_user_credentials():
hashed_password = sha256(request.form.get('password').encode('utf-8')).hexdigest()
user = User.query.filter(User.name==request.form.get('name'), User.password==hashed_password).first()
if user:
if user.active_session:
return jsonify({ 'response': 'Session already exists' })
else:
return jsonify({ 'response': 'Allow' })
return jsonify({ 'response': 'Incorrect data' })
Дело в том, что когда данные введены неверно и/или вход в аккаунт был произведен ранее, то все работает как надо (форма не отправляется и появляется соответствующие сообщения). Но, когда данные верны и ранне в аккаунт никто не входил, то сообщений нет (как и надо), а форма все равно НЕ отправляется, хотя должна бы. Я просто нажимаю кнопку и ничего не происходит, хотя данные с помощью ajax отправляются.
Если что, использую вот эту версию jQuery:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
Если что, ChatGPT не справляется с этим) Буду рад любой помощи и советам.