我正在尝试检查数据库中是否存在电子邮件,但该函数未返回值。
这是代码:
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;
}
编辑:电子邮件以字符串形式发送
答案 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;