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