<script type="text/javascript">
   function checkUserExists(){
   var f=document.form;
   var username=f.username.value;
   if(username==""){
   alert("用户名不能为空");
  
   return false;
   }else{
   doAjax(username);
   }
   }
   function createXmlHttpRequest(){
   if(window.ActiveXObject){
   return new ActiveXObject("Microsoft.XMLHTTP");
   }else if(window.XMLHttpRequest){
   return new XMLHttpRequset();
   }
   }
   var xmlHttp;
   function doAjax(username){
  
   var url="CheckUserServlet?username="+username;
  
   xmlHttp=createXmlHttpRequest();
   xmlHttp.onreadystatechange=processRequest;
   xmlHttp.open("GET",url,true);
   xmlHttp.send(null);
   }
   String.prototype.trim = function() {
var m = this.match(/^\s*(\S+(\s+\S+)*)\s*$/);
return (m == null) ? "" : m[1];
}
   function processRequest(){
   if(xmlHttp.readyState==4){
   if(xmlHttp.status==200){
   if(xmlHttp.responseTest.trim()=="false"){
   document.getElementById("mess").innerHTML="用户名可以使用";
   }else{
   document.getElementById("mess").innerHTML="用户名已被使用";
   }
   }else{
   alert("请求处理返回的数据有错误!");
   alert(xmlHttp.status);
   }
   }
   }

解决方案 »

  1.   

    初学Ajax有问题很正常,你不要一下子就忽略掉太多的提示信息,调试的时候把浏览器的调试工具开起来,否则就算出了很多错误,你都看不见。
      

  2.   

    楼主最好一步一步调试先看看
    1,看能不能进入到else{
        doAjax(username);
      }
    这里面可以alert一下
    2,可以再回调函数processRequest()中alert一下看看ajax现在的状态
    如果没有4那么就表示根本没有交互完成,你可以看看servlet那边的情况
    3,你的url后面加上时间戳或者随机数来防止缓存带来的影响,&time=" + new Date().getTime()
      

  3.   

    倒数10行:  
    if(xmlHttp.responseTest.trim()=="false"){
      document.getElementById("mess").innerHTML="用户名可以使用";xmlHttp.responseText 写错了
      

  4.   

    建议楼主如果想学好ajax的话,用个对javascript支持比较好的IDE,例如IntelliJ,这样的话方便查错。