巨神奇啊!红色那段字就是“var text=xmlhttp.responseText;”这段,如果不写程序就会直接走alert("失败了")这里去,弹出三遍后才进入if (xmlhttp.readyState==4 && xmlhttp.status==200)。
但更神奇的是红色那段字改成别的也行,我总结出就是只要有xmlhttp.responseText出现就能正常运行!
哪位能告诉我这是怎么了啊,跟同步异步那个false也木有关系,试过啦!
function checkEmail() {
email=document.getElementById("email").value;
var xmlhttp=createAjax();
if (xmlhttp) {
var url="checkuser.asp?email="+escape(email);
xmlhttp.open("get",url,false);
xmlhttp.onreadystatechange=function() {
var text=xmlhttp.responseText;
if (xmlhttp.readyState==4 && xmlhttp.status==200){
if (xmlhttp.responseText=="yes"){
d=1;
}else{
d=0;
}
}else{
alert("失败了");
}
}
xmlhttp.send(null);
}
}
------解决方案--------------------------------------------------------
var text=xmlhttp.responseText;
会同步阻塞住,等待服务器返回数据。
不写这一行,执行下面代码的时候服务器还没有来得及返回,
------解决方案--------------------------------------------------------
xmlhttp.readyState是从0到4的,弹出3遍是正确的。
当xmlhttp.readyState不是4时xmlhttp是不存在responseText属性的
你的逻辑是错误的