2013-10-08 55 views
1

我試圖從Google電子表格中將一組單元格拉到網頁中進行報告。我讀了幾個其他帖子,建議使用超時,但我似乎無法得到那個工作。如果你認爲這會起作用,我可以添加我試圖用於超時的代碼。這裏是我的代碼:如何在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] ="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]); 
    } 

當我在運行它循環我爲每個id標籤獲得相同的值。它們都是數組中最後一項的值。我不確定如果問題是xmlhttprequest沒有得到足夠的時間或什麼,任何幫助將不勝感激。

+0

你的循環聲明瞭一個索引'a',但你在體內引用'i'?此外,您應該考慮對每天的數據進行單一請求,而不是同時進行7次,因爲當您獲得代碼工作時,這將不可避免地成爲瓶頸的開始。 – Emissary

+0

好的@ @使者謝謝!最終,我們將轉而採用全部7天的時間,但現在讓項目運行起來更簡單。 – goteamtim

回答

3

您沒有在XHR事件處理程序中正確聲明「temp」作爲局部變量。在它前面加上var。沒有這一點,這是全球性的。這意味着每次調用「getValue()」都會覆蓋前一個的工作。

+0

這樣做,謝謝! – goteamtim