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

.NET使用Ajax(非AJAX.NET,是Js的)连续调用2次,第一次调用的xmlHttp.readyState总为1
function CheckAIsOpen() {
  var a = document.getElementById("a");.value;
  createXMLHTTP(); //创建XMLHttpRequest对象
  var url = "../check.aspx?id=" + a;
  xmlHttp.open("POST", url, true);
  xmlHttp.onreadystatechange = CheckAIsOpen_Callback;
  xmlHttp.send(null);
}

function CheckAIsOpen_Callback() {

  var a_desc = document.getElementById("aDesc");
  if (xmlHttp.readyState < 4) {
  a_desc.innerHTML = "检测中......";
  }
  else if (xmlHttp.readyState == 4) {
  if (xmlHttp.status == 200) {
  var result = xmlHttp.responseText;
  if (result == "t") {
  a_desc.innerHTML = "";  
 }
  else {
  a_desc.innerHTML = "未开";
  return;
  }
  }
  }
}


function CheckBIsOpen() {
  var b = document.getElementById("b").value;
  createXMLHTTP(); //创建XMLHttpRequest对象
  var url = ../check.aspx?id=" + b;
  xmlHttp.open("POST", url, true);
  xmlHttp.onreadystatechange = CheckBIsOpen_Callback;
  xmlHttp.send(null);
}

function CheckBIsOpen_Callback() {
  var b_desc = document.getElementById("bDesc");
  if (xmlHttp.readyState < 4) {
  b_desc.innerHTML = "检测中......";
  }
  else if (xmlHttp.readyState == 4) {
  if (xmlHttp.status == 200) {
  var result = xmlHttp.responseText;
  if (result == "t") {
  b_desc.innerHTML = "";
  }
  else {
  b_desc.innerHTML = "未开";
  return;
  }
  }
  }
}

function Check() {
  CheckAIsOpen ();
  CheckBIsOpen ();
  }

.cs文件注册事件
this.btnCheck.Attributes.Add("onClick", "return Check()");

现在出现点击了button,aDesc 处一直显示检测中
我有把function Check() {
  CheckAIsOpen ();
  CheckBIsOpen ();
  }

中CheckAIsOpen和CheckBIsOpen的位置调换,发现检测中会一直显示在bDesc
我注释其中一个Check,就不会出现这个问题。
我想是连续调用会出这样的问题,但是不知道解决方法是什么
求高手解答

------解决方案--------------------
我也遇到过这种情况,好像一个xmlhttp对象只能使用一次,你试试创建两个不同的xmlhttp对象,各自调用。
------解决方案--------------------
每一次使用的时候 重新实例化 xmlHttp()