function goto()
{
if(document.form1.uname.value=="" || document.form1.pass.value=="")
{
alert("请输入用户名和密码");
return false;

}

var winop=false; 
  $.post("include/login.php", {
                        uname: $("input[name='uname']").val(),
                        pass: $("input[name='pass']").val()
                    }, function(res){    if(res == "user_error") {
winop=true;
alert("用户名错误");
 
}else if(res == "pass_error"){
winop=true;
alert("密码错误");
 
} })
//alert(winop);//为什么把这个不注掉就可以,一注掉这个,最下边那个else里的就无论结果真假都要弹出呢
if(winop==true)
{
return false;
}else{
alert('oook');
}
//document.location.reload();
}

解决方案 »

  1.   

    ajax 是异步的, 
    按楼主的写法,先是发送了一个post请求,
    if(winop==true) 到这一步的时候,post请求还没能request,即winop没改变值
    而alert阻止了进程,相当于等待post请求的返回结果,终止了alert之后的程序。楼主可以在success回调函数里操作,或者 使用ajax函数,将async设置为false。
      

  2.   

    +1,要么将ajax改为同步,要么将你的判断放进ajax的回调函数中