Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript函数始终运行底层代码_Javascript_Jquery_Function - Fatal编程技术网

JavaScript函数始终运行底层代码

JavaScript函数始终运行底层代码,javascript,jquery,function,Javascript,Jquery,Function,我有这个部分工作的代码。它应该做的是检查数据库中现有的电子邮件地址。如果不存在电子邮件,则返回true $(document).ready(function() { var email_check = 0; var checking_html = '<img src="http://i.imgur.com/Y8wXAZp.gif" /> Checking...'; var characters_error = 'Minimum a

我有这个部分工作的代码。它应该做的是检查数据库中现有的电子邮件地址。如果不存在电子邮件,则
返回true

 $(document).ready(function() {

    var email_check = 0;    

        var checking_html = '<img src="http://i.imgur.com/Y8wXAZp.gif" /> Checking...';
        var characters_error = 'Minimum amount of chars is 6';

        //when button is clicked
        $('.register').click(function(){    

            //run the character number check
            if($('#email').val().length < 1){

                $('#email_result').html(characters_error);
                return false;
            }                   
            else{           
                //else show the cheking_text and run the function to check
                $('#email_result').html(checking_html);

                alert(check_email_availability());
            }
        });


  });

//function to check email availability  
function check_email_availability(){

        //get the email
        var email = $('#email').val();

        //use ajax to run the check
        $.post("check_email.php", { email: email },
            function(result){
                email_check = 0;
                //if the result is 1
                if(result == 1){
                    //show that the email is available
                    email_check = 1;

                }else{
                 email_check = 0;
                }

        });

        if (email_check == 1){  
             return true;   
        }else{
             return false;      
        }   

}  
$(文档).ready(函数(){
var电子邮件检查=0;
var checking_html='checking…';
var characters_error='字符的最小数量为6';
//单击按钮时
$('.register')。单击(函数(){
//运行字符号检查
if($('#email').val().length<1){
$('#email_result').html(字符错误);
返回false;
}                   
否则{
//否则,显示cheking_文本并运行函数进行检查
$('#email_result').html(检查_html);
警报(检查电子邮件可用性();
}
});
});
//用于检查电子邮件可用性的功能
功能检查\电子邮件\可用性(){
//收到电子邮件
var email=$('#email').val();
//使用ajax运行检查
$.post(“check_email.php”,{email:email},
功能(结果){
电子邮件检查=0;
//如果结果是1
如果(结果==1){
//显示电子邮件可用
电子邮件检查=1;
}否则{
电子邮件检查=0;
}
});
如果(email_check==1){
返回true;
}否则{
返回false;
}   
}  

现在的问题是,如果当前状态为
false
,当我输入数据库中不可用的电子邮件并单击按钮时,我仍然会收到
false
警报,而当我下次单击按钮时,我会收到
true
警报。出于某种原因,函数首先执行底部代码(检查
email\u check
value),然后执行函数。为什么呢?我的代码有什么问题?我如何使它执行函数,然后检查
电子邮件检查
值是否为
1

我将更改此设置,在检查函数上放置一个ajax成功回调,如下所示

success: function (data, status, xhr ) {
   myFunctionShowEmailSuccess();
},
error: function (xhr, status, error) {
    myFunctionShowEmailFailure();
}
试着这样做

//function to check email availability  
function check_email_availability(){

        //get the email
        var email = $('#email').val();

        //use ajax to run the check
        $.post("check_email.php", { email: email },
            function(result){
                email_check = 0;
                //if the result is 1
                if(result == 1){
                    //show that the email is available
                    return true;
                }else{
                 return false;
                }

        });

}

post请求以异步方式运行,这意味着它将在获得响应后进行计算。你的if块将在帖子返回之前运行。不幸的是,我没有收到任何警报。谢谢你给我这个主意。我使用了几乎相似的方法。我的问题已经解决了。再次感谢。