Я использую JQUERY для проверки формы регистрации с клиентской стороны. Я также использую запрос AJAX с файлом PHP, чтобы проверить и убедиться, что письмо является допустимым адресом электронной почты и еще не используется другим пользователем. Все работает отлично, за исключением того, что кажется, что форма отправляется до завершения AJAX. Это общая проблема? Как я могу это предотвратить?Использование JQuery, AJAX и PHP для проверки формы HTML
Мой JQuery/AJAX:
<script>
$(document).ready(function() {
$(".form-row-error").hide();
$("#signup").submit(function() {
$(".form-row-error").hide();
var error= false;
var dataString = $(this).serialize();
var fname= $("#fname").val().trim();
var lname= $("#lname").val().trim();
var email= $("#email").val().trim();
var username= $("#username").val().trim();
var password1= $("#password1").val().trim();
var password2= $("#password2").val().trim();
if (fname == 0) {
$("#field1").show();
error= true;
}
if (lname == 0) {
$("#field2").show();
error= true;
}
if (email == 0) {
$("#field3").show();
error= true;
}
else {
// Run AJAX email validation and check to see if the email
is already taken
$.ajax({
type: "POST",
url: "checkemail.php",
data: dataString,
success: function(data) {
if (data == 'invalid') {
alert('invalid email');
error= true;
}
else if (data == 'taken') {
alert('email taken');
error= true;
}
}
});
}
if (username == 0) {
$("#field4").show();
error= true;
}
// Checks to see if the username is already in use, if so show the
field4 secondary error
if (username != 0) {
// Script to check the username against the database and
shows the error if applicable
// $("#field4-secondary").show();
// error= true;
}
if (password1 == 0) {
$("#field5").show();
error= true;
}
if (password2 == 0) {
$("#field6").show();
error= true;
}
// Checks and makes sure both password fields have been filled
if (password1 != 0 && password2 != 0) {
// Checks to see if the passwords match, if not show the
field5 secondary error and reset the password fields
if (password1 != password2) {
$("#field5-secondary").show();
$("#password1").val("");
$("#password2").val("");
error= true;
}
}
if (error == true) {
return false;
}
});
});
</script>
Некоторые фона:
Оповещения успеха AJAX имеют только шанс появиться, если я оставлю еще поле пустым, а также есть ошибка с электронной почтой. Это и заставляет меня поверить, что запрос AJAX не имеет возможности завершить работу до того, как начнется следующая часть скрипта.
Мой PHP-файл не является проблемой.
Меня не интересует использование JSON, я считаю, что простой текст проще.
Я использую JQuery 1.7.1
Возможный дубликат [Jquery: return: false on submit не работает - форма по-прежнему отправляется] (http://stackoverflow.com/questions/18335408/jquery-return-false-on-submit-not-working-form- все еще подает заявку) – Ryan