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 요청이 스크립트의 다음 부분이 시작되기 전에 완료 할 기회가 없다고 생각하게 만듭니다.
내 PHP 파일은 문제가되지 않습니다.
JSON 사용에 관심이 없습니다. 간단한 텍스트를 반환하는 것이 더 쉽습니다. 나는 JQuery와 1.7.1
가능한 복제본 [Jquery : return : false가 작동하지 않는 제출 - 양식이 여전히 제출 됨] (http://stackoverflow.com/questions/18335408/jquery-return-false-on-submit-not-working-form- still-submits) – Ryan