读书人

.NET使用Ajax(非AJAX.NET,是Js的)连续

发布时间: 2012-06-13 12:30:18 作者: rapoo

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

读书人网 >asp.net

热点推荐