如何在javascript中循环执行xmlhttprequest

如何在javascript中循环执行xmlhttprequest,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我正试图将谷歌电子表格中的一组单元格拉到一个网页中进行报告。我读了其他一些帖子,其中建议使用超时,但我似乎也无法让它正常工作。如果您认为这样做可行,我可以添加我试图用于超时的代码。这是我的密码: var days = new Array(); days[0] ="G11%3AG11"; /*Today*/ days[1] ="G10%3AG10"; days[2] ="G9%3AG9"; days[3] ="G8%3AG8"; days[4] ="G7%3AG7"; days[5] =

我正试图将谷歌电子表格中的一组单元格拉到一个网页中进行报告。我读了其他一些帖子,其中建议使用超时,但我似乎也无法让它正常工作。如果您认为这样做可行,我可以添加我试图用于超时的代码。这是我的密码:

    var days = new Array(); 
days[0] ="G11%3AG11"; /*Today*/
days[1] ="G10%3AG10";
days[2] ="G9%3AG9";
days[3] ="G8%3AG8";
days[4] ="G7%3AG7";
days[5] ="G6%3AG6";
days[6] ="G5%3AG5";
days[7] ="G4%3AG4"; /*One week ago*/

    var dayOfWeek = new Array();    
dayOfWeek[0] ="day0";
dayOfWeek[1] ="day1";
dayOfWeek[2] ="day2";
dayOfWeek[3] ="day3";
dayOfWeek[4] ="day4";
dayOfWeek[5] ="day5";
dayOfWeek[6] ="day6";
dayOfWeek[7] ="day7";

    function getValue(cell, element){
var url = "https://docs.google.com/spreadsheet/pub?key=MyKey&single=true&gid=2&range="+cell+"&output=csv";
temp = new XMLHttpRequest();
        temp.onreadystatechange = function () {
          if (temp.readyState === 4) {
              document.getElementById(element).innerHTML = temp.responseText;
          }
      };
      temp.open("GET", url, true);
      temp.send(null);
}

当我调用代码主体中的函数时,它看起来是这样的:

    for(var a=0;a<days.length;a++){      
     getValue(days[a],dayOfWeek[a]);
    }

for(var a=0;a您没有在XHR事件处理程序中将“temp”正确声明为局部变量。在它前面添加
var
。否则,它是全局变量。这意味着每次调用“getValue()”你的循环声明了一个索引<代码> a <代码>,但是你在正文中引用了<代码> i>代码>你也应该考虑对一天的数据进行一个单一的请求而不是7个请求,因为这将不可避免地成为你的代码工作时一个瓶颈的开始。使者,谢谢!最终我们会把7天的时间都用在抽签上,但现在项目启动和运行起来更简单。