2013-10-08 4 views
1

보고 용 웹 페이지에 Google 스프레드 시트의 셀 집합을 가져 오려고합니다. 타임 아웃 사용을 제안하는 몇 가지 다른 게시물을 읽었지만 그 중 하나를 작동시키지 못합니다. 작동한다고 생각되면 타임 아웃을 위해 사용하려고 시도한 코드를 추가 할 수 있습니다. 나는 위해 그것을 실행하면javascript에서 xmlhttprequest를 반복하는 방법

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

: 같은

나는이 코드의 본체에있는 함수를 호출

이 보이는 것입니다

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); 

} : 여기 내 코드입니다 루프 내 ID 태그 각각에 대해 동일한 값을 얻습니다. 그것들은 모두 배열의 마지막 항목의 값입니다. 문제가 xmlhttprequest와 충분한 시간을 가지지 못하거나 무엇이 도움이 될지 모르겠다.

+0

루프가 인덱스 'a'를 선언하지만 본문에서'i'를 참조합니까? 또한 코드를 작동시킬 때 필연적으로 병목 현상의 시작이 될 수 있으므로 매일 7 번이 아닌 하루에 한 번씩 데이터를 요청하는 것을 고려해야합니다. – Emissary

+0

좋은 캐치 @ 임무 감사합니다! 결국 우리는 7 일간의 활동으로 전환 할 것입니다.하지만이 프로젝트를 당장 실행하는 것이 더 간단합니다. – goteamtim

답변

3

"temp"를 XHR 이벤트 처리기의 로컬 변수로 올바르게 선언하지 않았습니다. 그 앞에 앞에 var을 붙이십시오. 그것이 없으면, 그것은 전 세계적입니다. 즉, "getValue()"를 호출 할 때마다 이전 호출의 작업을 덮어 씁니다.

+0

그건 속임수 였어, 고마워! – goteamtim

관련 문제