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块将在帖子返回之前运行。不幸的是,我没有收到任何警报。谢谢你给我这个主意。我使用了几乎相似的方法。我的问题已经解决了。再次感谢。