日期:2014-05-17  浏览次数:20471 次

太神奇~超自然了么~没法解释~xmlhttp很NB的现象!
巨神奇啊!红色那段字就是“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属性的

你的逻辑是错误的