function checkEmailValid(email,result)
{
if(email.val()==""){
result.text("이메일을 입력하십시요.");
return false;
}
else{
var re_mail = /^([\w\.-]+)@([a-z\d\.-]+)\.([a-z\.]{2,6})$/;
if(re_mail.test(email.val())){
var res = false;
$.ajax({
type:"GET",
url: "http://127.0.0.1:3000/auth/checkemail/"+email.val(),
timeout: 2000,
beforeSend: function(){
result.text("이메일 확인 중...");
},
complete: function(jqXHR){
if(jqXHR.status==202){
res = true;
}else{
result.text("이미 등록된 이메일입니다.");
res = false;
}
},
success:function(data,textStatus,jqXHR){
},
fail: function(){
}
});
alert("step2 : " + res); ////////Here is Step2!!!
alert("step3 : " + res); ///////Here is Step3!!!
return res;
}else{
result.text("이메일 형식이 올바르지 않습니다.");
return false;
}
}
}
以上功能适用于电子邮件验证:
如果电子邮件有效,该函数将返回true,但奇怪的是,step2的res为false,step3的res为true。发生了什么事?
第2步值:
第3步值:
答案 0 :(得分:0)
我不会建议您设置" async"为假 因为这是一种不好的做法,但您可以使用回调函数在真实条件下执行任务
我会解释
首先在你的函数中添加另一个参数,如
function checkEmailValid(email,result,SuccessCallback)
并创建一个函数,当ajax返回true时将执行您的任务
喜欢
function EmailIdIsUnique()
{
//perform your code here
}
并在ajax中调用此回调函数
喜欢
complete: function(jqXHR){
if(jqXHR.status==202){
//run your code here
if ($.isFunction(SuccessCallback))
{
result = successcallback.call(this);
}
}else{
result.text("이미 등록된 이메일입니다.");
res = false;
}
},