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

一个Ajax问题 初级菜鸟求帮助
<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);
  }
  }
  }

------解决方案--------------------
初学Ajax有问题很正常,你不要一下子就忽略掉太多的提示信息,调试的时候把浏览器的调试工具开起来,否则就算出了很多错误,你都看不见。
------解决方案--------------------
楼主最好一步一步调试先看看
1,看能不能进入到else{
doAjax(username);
}
这里面可以alert一下
2,可以再回调函数processRequest()中alert一下看看ajax现在的状态
如果没有4那么就表示根本没有交互完成,你可以看看servlet那边的情况
3,你的url后面加上时间戳或者随机数来防止缓存带来的影响,&time=" + new Date().getTime()

------解决方案--------------------
倒数10行:
if(xmlHttp.responseTest.trim()=="false"){
document.getElementById("mess").innerHTML="用户名可以使用";



xmlHttp.responseText 写错了