我正在尝试检查数据库中是否存在电子邮件,但该函数不返回值。
这是代码:
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;
}
编辑:电子邮件作为字符串发送
我简短地说,您不能从
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>
你能用下面这样简单的东西吗
$.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; }
});