我正在使用jQuery Validator插件尝试在ajax调用之后检查输入到表单中的电子邮件地址是否唯一,该调用将电子邮件传递给脚本,该脚本检查电子邮件是否已存在于数据库中。我正在使用回调函数来尝试获取ajax查询的结果,但该函数始终返回undefined。我不确定我做错了什么。这是代码:
jQuery.validator.addMethod("unique", function () {
function foo(callback) {
$.ajax({
type: 'POST',
async: true,
url: '/form_processor',
data: 'action=email_validate&email=' + $("#email").val(),
success: callback
});
}
var return_value = foo(function (result) {
if (result !== 'g') {
return false;
} else {
return true;
}
});
alert(return_value);
}, "Email address taken. Choose another.");
答案 0 :(得分:1)
如果您正在使用jquery验证器,那么在构建方法中验证它们,那么您的验证代码将会像,
$(document).ready(function(){
$( "#myform" ).validate({
rules: {
email: {
required: true,
email: true,
remote: {
url: "form_processor",
type: "post",
data: {
email: function() {
return $( "#email" ).val();
}
}
}
}
},
messages:
{
email:
{
required: "Please enter your email address.",
remote: "Email already taken"
}
}
});
})
在服务器端,您必须返回(打印)true
或false
代码(如果您使用的是php)
<?php
$email = $_POST['email'];
$query = "SELECT ID FROM users WHERE user_email = "$email" LIMIT 1;";
$results = $mysqli->query($query);
if($results->num_rows == 0)
{
echo "true"; //good to register
}
else
{
echo "false"; //already registered
}
}
else
{
echo "false"; //invalid post var
}
?>