下面是我在页面加载时调用的代码。
它在我使用时有效
xmlhttp.open("GET", "../handlers/fetchshift.ashx?id=" + divs[i].id, false);
但如果我使用
xmlhttp.open("GET", "../handlers/fetchshift.ashx?id=" + divs[i].id, true);
xmlhttp.onreadystatechange 仅在最后一个 div 中调用。为什么会这样?我需要它在异步模式下。
function myfunction() {
try {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var table = document.getElementById('<%=GridView1.ClientID%>');
if (table == null) return;
var divs = table.getElementsByTagName('div');
for (var i = 0; i < divs.length; i++) {
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var msg = xmlhttp.responseText.split("|");
var table = document.getElementById('<%=GridView1.ClientID%>');
var divs = table.getElementsByTagName('div');
for (var i = 0; i < divs.length; i++) {
if (divs[i].id == msg[0]) {
divs[i].innerHTML = msg[1];
divs[i].parentNode.style.backgroundColor = msg[2];
}
}
}
}
xmlhttp.open("GET", "../handlers/fetchshift.ashx?id=" + divs[i].id, false);
xmlhttp.send();
}
} catch (e) {
alert(e);
}
}