Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.06.2012, 19:15
Аватар для keysi_
Интересующийся
Отправить личное сообщение для keysi_ Посмотреть профиль Найти все сообщения от keysi_
 
Регистрация: 29.04.2009
Сообщений: 22

Помогите, где может быть ошибка?
Есть веб интерфейс программы, обновление данных происходит по AJAX. Это интерфейс телефонного оператора, он там смотрит историю звонков и сохраняет номера. Скажу что за некоторые методы, которые я использовал в коде, стыдно, но я не гуру JS и раньше моих знаний хватало, а тут нагрузка по больше и полезли ошибки. В частности, переполнение стека (Uncaught RangeError: Maximum call stack size exceeded пишет Chrome), но я даже не понимаю как отследить эту ошибку, браузер очень скудно выдает информации (любой), пришел к мысли, что дело в логике, все переписывать на данный момент нет времени, сроки горят, а система уже запущена.
Код прикрепляю:
Вложения:
Тип файла: txt index.php.txt (15.6 Кб, 6 просмотров)

Последний раз редактировалось keysi_, 03.06.2012 в 19:18.
Ответить с цитированием
  #2 (permalink)  
Старый 03.06.2012, 19:34
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Похоже трабл кроется вот в этой функции
function sendauto(){
  var locked=document.getElementsByName('locked')[0].value;
  if (locked!='yes'){ // блокировка автомата , чтобы не ускорялся
    document.getElementsByName('locked')[0].value='yes';
    var iquery=parseInt(document.getElementsByName('iquery')[0].value);
    if (iquery>44000){ location.reload(); return false;} // обновление страницы раз в 4 часа, на всяк случай
    setTimeout (function(){start()},100);
  }else sendauto();//setTimeout (function(){sendauto();},1000);
}

В частности в локальном режиме она рекурсивно себя вызывает до бесконечности
Второе Рекурсивный вызов таймера в ней же функции старт - , А что одной инициализации start() на всё - про всё не хватает ?
Собственно - эт быстро мысли - на счёт куда рыть..
Ответить с цитированием
  #3 (permalink)  
Старый 03.06.2012, 19:40
Аватар для keysi_
Интересующийся
Отправить личное сообщение для keysi_ Посмотреть профиль Найти все сообщения от keysi_
 
Регистрация: 29.04.2009
Сообщений: 22

Сообщение от Deff Посмотреть сообщение
В частности в локальном режиме она рекурсивно себя вызывает до бесконечности
Но ведь она должна постоянно проверять сервер на поступление новых данных, или в JS есть какой-то другой способ это сделать?
Сообщение от Deff Посмотреть сообщение
Второе Рекурсивный вызов таймера в ней же функции старт - , А что одной инициализации start() на всё - про всё не хватает ?
Исходя из предыдущего, мне необходимо и при каждом вызове проверять таймер, ведь сама переменная без проверки не изменится же, верно?
Ответить с цитированием
  #4 (permalink)  
Старый 03.06.2012, 19:45
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

keysi_,
Почему не делать это в одной функции ?? Если завсегда одна - Вызывает другую ?

У метода Aякс загрузки должен быть саllback - завершения(удачного/неудачного, но конца) - из него и запускать следующее деяние, если данных нет, запускаем через проверочный интервал (думаю порядка 1/10 между временем обновления данных
Ответить с цитированием
  #5 (permalink)  
Старый 03.06.2012, 19:53
Аватар для keysi_
Интересующийся
Отправить личное сообщение для keysi_ Посмотреть профиль Найти все сообщения от keysi_
 
Регистрация: 29.04.2009
Сообщений: 22

Сообщение от Deff Посмотреть сообщение
У метода Aякс загрузки должен быть саllback - завершения(удачного/неудачного, но конца) - из него и запускать следующее деяние, если данных нет, запускаем через проверочный интервал (думаю порядка 1/10 между временем обновления данных
Это чтож мне для проверки саllback еще один бесконечный цикл запускать?
Ответить с цитированием
  #6 (permalink)  
Старый 03.06.2012, 19:55
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от keysi_
Это чтож мне для проверки саllback еще один бесконечный цикл запускать?
Хм - Вы как раз забиваете после запуска Aякс на функцию и выходите из нее
А в саllback - проверяете результат - и запускаете - Таймер повторного запроса или же обработку результата и ток потом таймер

Последний раз редактировалось Deff, 03.06.2012 в 19:57. Причина: мер
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сколько максимум символов может быть в 1 Cookie? FirstFrost Общие вопросы Javascript 8 18.07.2010 01:26
Выделить группу чекбоксов. В группе может быть только один чекбокс. JooZ Элементы интерфейса 2 23.12.2009 19:28
Помогите кто может?! Ingiborn Javascript под браузер 7 04.12.2009 19:06
Помогите разобраться с проблемой SergeiAzarov (X)HTML/CSS 0 28.03.2008 18:51