这是因为异步调用造成的,当执行post方法的时候,请求后台去执行,当后台尚未执行完毕,js不会等待,而执行post方法后面的代码,造成 程序执行的时候总是先执行$.post()之后的代码。
lz可以这样试试:function fvalidate(text, textError) {
var code = $("#" + text);
var ce = $("#" + textError);
var r = 0;
$.post("validate", {"codeText" : code.val()}, function(rsp) {
if (rsp == "1") {
ce.html("<font color='green' size='2'>验证码正确</font>");
r=1;
alert("++"+r);
return true;//作为测试用
} else {
ce.html("<font color='red' size='2'>验证码错误</font>");
r=0;
alert(r);
alert("--"+r);
return false;
}
}或者function fvalidate(text, textError) {
var code = $("#" + text);
var ce = $("#" + textError);
var r = 0;
$.post("validate", {"codeText" : code.val()}, function(rsp) {
if (rsp == "1") {
ce.html("<font color='green' size='2'>验证码正确</font>");
r=1;
alert(r);//作为测试用
return returnResult(r);
} else {
ce.html("<font color='red' size='2'>验证码错误</font>");
r=0;
alert(r);
return returnResult(r);
}
});
}
function returnResult(var r){
if (r==1) {
alert("++"+r);
return true;
}
alert("--"+r);
return false;
}