2013-10-08 3 views
1

Я пытаюсь вытащить набор ячеек из электронной таблицы google на веб-страницу для отчетности. Я прочитал несколько других сообщений, которые предложили использовать тайм-аут, но я тоже не могу заставить работать. Если вы думаете, что это сработает, я могу добавить свой код, который я пытался использовать для таймаута. Вот мой код:Как пропустить xmlhttprequest в javascript

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

Когда я запускаю его в течение loop Я получаю одинаковое значение для каждого из моих тегов id. Все они являются значениями из последнего элемента массива. Я не уверен, что проблема связана с тем, что xmlhttprequest не получает достаточного количества времени или что-то, любая помощь будет оценена по достоинству.

+0

Ваша петля объявляет индекс 'a', но вы ссылаетесь на' i' в теле? Также вам стоит подумать о том, чтобы сделать один запрос для данных, относящихся к каждому дню, а не к 7 одновременно, поскольку это неизбежно станет началом узкого места, когда вы получите свой код. – Emissary

+0

Хорошо поймать @Emissary спасибо! В конце концов мы переключимся на тянуть все 7 дней, но это было проще, чтобы запустить проект на данный момент. – goteamtim

ответ

3

Вы неправильно объявляете «temp» в качестве локальной переменной в обработчике событий XHR. Добавьте var перед ним. Без этого это глобально. Это означает, что каждый вызов метода getValue() перезаписывает работу предыдущего.

+0

Это сделал трюк, спасибо! – goteamtim

Смежные вопросы