.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()