이것은 나를 괴롭힌다. addMethod 규칙에서 ajax를 사용하여 PHP를 통해 내 데이터베이스에 전자 메일 주소가 존재하는지 여부를 확인하는 간단한 검사를 수행합니다. 전자 메일을 찾았을 때 PHP 파일이 "true"또는 "false"를 올바르게 출력하고 있음을 확인했지만 응답이 정확하고 값이 false 인 경우에도 규칙은 항상 true를 반환합니다. (이하 "isExisting"오류 메시지가 항상에 관계없이 이메일이 정말 존재하는지의 여부를 팝업) -Validator가 항상 true를 반환하는 addMethod의 규칙
$.validator.addMethod("isExisting", function() {
var checkemail=$("#email").val();
console.log('Email: '+checkemail); // shows email populated correctly
if(checkemail){
$.ajax({
type: 'post',
url: 'checkemail.php',
data: {email:checkemail,},
success: function(response){
console.log(response); // properly returns text "false" when email not found
var exists = (response=="false") ? false : true;
console.log('exists = '+exists); // is properly false
return exists; // returns false
}
});
}
});
그리고 발리에서 :
$("#signupform").validate({
errorLabelContainer: "#errors",
errorPlacement: function (error, element) {
error.insertAfter(element);
$(element).addClass(errorClass).removeClass(validClass);
},
rules: {
fullname: {
required: true,
minlength: 2
},
email: {
required: true,
email: true,
isExisting: true
},
areacode: {
required: true,
digits: true,
minlength: 3
},
prefix: {
required: true,
digits: true,
minlength: 3
},
num: {
required: true,
digits: true,
minlength: 4
},
address: {
required: true,
},
city: {
required: true,
},
noRobot: {
isCaptcha: true,
}
},
messages: {
fullname: {
required: "Please enter your full name.<br />",
minlength: "Please enter your First and Last name.<br />"
},
email: {
required: "Please enter your email address.<br />",
email: "Please enter a valid email address.<br />",
isExisting: "There is already an account with that email address.<br />"
},
areacode: {
required: "Please enter your areacode.<br />",
minlength: "Your areacode should be 3 digits. »XXX« XXX-XXXX<br />"
},
prefix: {
required: "Please enter your phone number prefix.<br />",
minlength: "Your phone number Prefix should be 3 digits. XXX »XXX«-XXXX<br />"
},
num: {
required: "Please enter your phone number suffix.<br />",
minlength: "Your phone number Suffix should be 4 digits. XXX XXX-»XXXX«<br />"
},
address: {
required: "Please enter your Street Address for pick-up service.<br />"
},
city: {
required: "Please enter your town or city.<br />"
},
noRobot: {
isCaptcha: "Please verify that your are not a spam Robot.<br />"
}
}
});
이
은 규칙입니다나는 "isExisting : true"가 true 값이 응답에서 반환 된 경우에만 유효성을 확인한다고 생각합니다.
checkemail.php (긁힌 자국이 ... 좌절에 머리) :
else{
$result = mysqli_query($connect, "SELECT * FROM `customer_info` WHERE `email`='$email' LIMIT 1");
$num = mysqli_num_rows($result);
if($num > 0){
echo "true";
}
else {
echo "false";
}
}
mysqli_close($connect);
감사합니다. 이전에 시도했지만, 다시 시도해 보았습니다. 콘솔에서 다음 오류를 표시합니다. (jquery-3.2.0.min.js : 9446 주 스레드의 동기 XMLHttpRequest는 최종 사용자의 경험에 해로운 영향을 미치므로 더 이상 사용되지 않습니다. 도움이 필요하면 https : // xhr을 확인하십시오. spec.whatwg.org/). 결과는 같습니다. –