Javascript 无法使用回调从ajax调用获取响应

Javascript 无法使用回调从ajax调用获取响应,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用jqueryvalidator插件来检查在ajax调用之后,表单中输入的电子邮件地址是否唯一,ajax调用会将电子邮件传递给脚本,脚本会检查电子邮件是否已经存在于数据库中。我使用回调函数尝试获取ajax查询的结果,但该函数总是返回未定义的结果。我不确定我做错了什么。代码如下: jQuery.validator.addMethod("unique", function () { function foo(callback) { $.ajax({

我正在使用jqueryvalidator插件来检查在ajax调用之后,表单中输入的电子邮件地址是否唯一,ajax调用会将电子邮件传递给脚本,脚本会检查电子邮件是否已经存在于数据库中。我使用回调函数尝试获取ajax查询的结果,但该函数总是返回未定义的结果。我不确定我做错了什么。代码如下:

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.");

如果您使用的是jquery validator,那么内置方法就是他们要验证的方法,所以您的验证代码如下:

$(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
}

?>