重新调整ajax帖子的反应

时间:2016-02-16 10:33:23

标签: javascript ajax

我正在尝试检查数据库中是否存在电子邮件,但该函数未返回值。

这是代码:

function checkemail(email)
{
    var returnVal = "";
    if (email.indexOf("@") != -1 && email.indexOf(".") != -1)
    {
        $.post( "registreren.php?email=" + email, function( response ) {
            if(response == 1) { returnVal = 1; }
            if(response == 2) { returnVal = 2; }
        });
    }
    else
    {
        returnVal = 3;
    }//email

    return returnVal;

}

编辑:电子邮件以字符串形式发送

2 个答案:

答案 0 :(得分:0)

你能使用像下面那样简单的东西

$.ajax({
        url: 'registreren.php',
        type: 'post',
        dataType: "json",
        data: {'email': email},
        success: function (response) {
            if (response == 1)
            {
               returnVal = 1; 
            }
            else
            {
               returnVal = 3; 
            }
        }
    });

而不是

$.post( "registreren.php?email=" + email, function( response ) {
            if(response == 1) { returnVal = 1; }
            if(response == 2) { returnVal = 2; }
    });

答案 1 :(得分:0)

  

我简短,你不能从ajax调用中返回值,因为它本质上是异步的,语句return value之前执行

要解决此类情况,请使用callback,一个接受为参数的函数,并在收到response时执行(异步操作完成时)。

试试这个:



function checkemail(email, callback) {
  var returnVal = "";
  if (email.indexOf("@") != -1 && email.indexOf(".") != -1) {
    $.post("registreren.php?email=" + email, function(response) {
      callback(response);
    });
  } else {
    callback(3);
  }
}
checkemail('abc@xyz.com', function(val) {
  alert(val);
});

checkemail('INVALID_EMAIL', function(val) {
  alert(val);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;