Asp.net 为什么我下面的ajax不能在异步模式下工作
下面是我在页面加载时调用的代码。Asp.net 为什么我下面的ajax不能在异步模式下工作,asp.net,ajax,web-services,asynchronous,Asp.net,Ajax,Web Services,Asynchronous,下面是我在页面加载时调用的代码。 当我使用 xmlhttp.open("GET", "../handlers/fetchshift.ashx?id=" + divs[i].id, false); 但是如果我使用 xmlhttp.open("GET", "../handlers/fetchshift.ashx?id=" + divs[i].id, true); 仅为最后一个div调用xmlhttp.onreadystatechange。为什么会发生这种情况?我需要异步模式 function
当我使用
xmlhttp.open("GET", "../handlers/fetchshift.ashx?id=" + divs[i].id, false);
但是如果我使用
xmlhttp.open("GET", "../handlers/fetchshift.ashx?id=" + divs[i].id, true);
仅为最后一个div调用xmlhttp.onreadystatechange。为什么会发生这种情况?我需要异步模式
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);
}
}
函数myfunction(){
试一试{
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
var table=document.getElementById(“”);
if(table==null)返回;
var divs=table.getElementsByTagName('div');
对于(变量i=0;i
您需要在中为
循环创建一个新的xmlhttp
对象。目前,您每次都会覆盖所有内容,因此只有最后一个请求实际通过
它在同步模式下工作,因为xmlhttp.open()
将阻塞,直到所有内容都完成,所以在下一次迭代中,所有内容都将被覆盖,但这不再重要
function myfunction() {
try {
var table = document.getElementById('<%=GridView1.ClientID%>');
if (table == null) return;
var divs = table.getElementsByTagName('div');
for (var i = 0; i < divs.length; i++) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
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);
}
}
函数myfunction(){
试一试{
var table=document.getElementById(“”);
if(table==null)返回;
var divs=table.getElementsByTagName('div');
对于(变量i=0;i
您需要在中为
循环创建一个新的xmlhttp
对象。目前,您每次都会覆盖所有内容,因此只有最后一个请求实际通过
它在同步模式下工作,因为xmlhttp.open()
将阻塞,直到所有内容都完成,所以在下一次迭代中,所有内容都将被覆盖,但这不再重要
function myfunction() {
try {
var table = document.getElementById('<%=GridView1.ClientID%>');
if (table == null) return;
var divs = table.getElementsByTagName('div');
for (var i = 0; i < divs.length; i++) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
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);
}
}
函数myfunction(){
试一试{
var table=document.getElementById(“”);
if(table==null)返回;
var divs=table.getElementsByTagName('div');
对于(变量i=0;i