我正在使用此代码将表单提交到php脚本:
var valid = 'true';
$(document).ready(function(){
$("#contact").submit(function(){
$.post("process.php",
$("#contact").serialize(),
function(data){
if(data.email_check == 'invalid'){
valid = 'false'; //<---not set!
$("#email1").addClass('missing');
$("#message_ajax")
.html("<div class='errorMessage'>Sorry is NOT a valid e-mail address. Try again.</div>");
} else {
$("#message_ajax")
.html("<div class='errorMessage'>YES! this is A valid e-mail address. DO NOT Try again.</div>");
}
}, "json"
);
if(valid == 'true'){
$("#contact").hide();
}
return false;
});
});
我知道脚本返回'invalid'值,因为div和css按预期更新,但'valid'变量永远不会设置为'false'。认为这是一个范围问题,我已经移动了声明,如果声明没有任何快乐。
可能的相关问题 - 我正在使用firebug来逐步执行代码,但它只在代码执行时第一次在断点处停止,而且从不再次,但我可以提交任意次数的表单,它总是按预期响应 - 有效或无效。如你所见,我对jQuery很新。
答案 0 :(得分:6)
你在这里混合同步和异步代码。
if(valid == 'true'){
$("#contact").hide();
}
return false;
此代码^^^在调用回调function(data)
之前运行。
基本上发生了什么: