日期:2014-05-18  浏览次数:20393 次

Ajax问题 困扰多时
 
 
我想用Ajax技术做个注册时候检测用户名是否已经存在的判断 一直提示:xmlHttp.readyState为空或不是对象 请高手帮我看看

在default页面中的用户名输入框中 有onkeyup事件
<INPUT id="txtUserName" type="text" onkeyup="AjaxCheckName('document.getElementById('txtUserName').value');">

js的文件如下:

var xmlHttp //创建xmlHttpRequest对象

//判断浏览器
function CreateXmlHttpRequest()
{

  if(window.ActiveXObject)
  {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  else if(window.XMLHttpRequest) 
  {
xmlHttp = new XMLHttpRequest();
  } 
 
}

//检测用户是否存在
function AjaxCheckName(UserName)
{
  CreateXmlHttpRequest();
  var url = "DisponseEvent.aspx?D_Name="+UserName;
  xmlHttp.open("post",url,true);
  xmlHttp.onreadystatechange = ServerCheckName;
  xmlHttp.send(null);
  
}

//检测用户名的回调函数
function ServerCheckName()
{
  if(xmlHttp.readyState==4) //判断对象状态
  {
  if(xmlHttp.status==200) //判断信息返回成功,开始处理信息
  {
  if(xmlHttp.ResponseText=="false")
  {
  document.getElementById("imgInfo").scr="Error.gif";
  }
  else
  {
  document.getElementById("imgInfo").scr="ok.gif";
  }
   
  }
  }
}

DisponseEvent.aspx.cs页面的代码如下:

private void Page_Load(object sender, System.EventArgs e)
{
  string D_Name = Request.QueryString["D_Name"].ToString();
  if(user.checkName(D_Name)) //user.checkName一个函数 返回bool值
  {
  Response.Write("false");
  }
  else
  {
  Response.Write("true");
  }






------解决方案--------------------
运行了一下 没出现xmlHttp.readyState为空或不是对象的错误 基本正常 
只是后台cs输出结果要写成
Response.Clear();
Response.Write("true");
Response.Flush();
Response.End();
不然前台可能不会有你要的结果
------解决方案--------------------
这跟编译环境应该关系不大吧
我用orcas都没问题 不知道vs03怎样

你再调试跟踪下看看xmlHttp到底有值没