15.07.2014, 15:53
|
Аспирант
|
|
Регистрация: 04.01.2012
Сообщений: 78
|
|
Кстати, я пробовал еще один вариант, убрать полностью функцию load_new_msg и перенести ее на то место где вызывается она в 1 функции, результат тот же.
|
|
15.07.2014, 16:55
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Цитата:
|
Uncaught ReferenceError: intervalID is not defined
|
А, тьфу, вот так:
function load_new_msg(dialog_sender_id,dialog_receiver_id,dialog_pid,dialog_offset){
if (window.intervalID)
сlearInterval(window.intervalID)
window.intervalID = setInterval(function() {
$.ajax({
});
}, 5000);
}
Но лучше intervalID переназвать как-нибудь по-нормальному.
|
|
15.07.2014, 17:25
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
Сообщение от cOAPerator
|
if (intervalID)
сlearInterval(intervalID)
window.intervalID = setInterval(function() {
|
Попробуй в этом вот куске заменить все intervalID на window.intervalID.
Или создай пустой объект ob={} (перед вызом функции, в глобальной области) и замени все window.intervalID и intervalID на ob.IntervalID
Последний раз редактировалось newobject, 15.07.2014 в 17:30.
|
|
15.07.2014, 17:39
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
Сообщение от Erolast
|
А я типа что-то другое предложил?
|
Я просто не видел, я отвечал на сообщение на предыдущей странице.
|
|
15.07.2014, 17:49
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
Erolast,
Но я все равно не врубаюсь, как его код мог работать. Я не увидел в этом куске, где объявлен intervalID кроме этой самой функции, о которой разговор. Так почему же она у него не падает с ошибкой при первом же вызове? Значит intervalID должен быть где-то еще объявлен, правильно?
Последний раз редактировалось newobject, 15.07.2014 в 17:53.
|
|
15.07.2014, 18:02
|
Аспирант
|
|
Регистрация: 04.01.2012
Сообщений: 78
|
|
Сообщение от Erolast
|
А, тьфу, вот так:
function load_new_msg(dialog_sender_id,dialog_receiver_id,dialog_pid,dialog_offset){
if (window.intervalID)
сlearInterval(window.intervalID)
window.intervalID = setInterval(function() {
$.ajax({
});
}, 5000);
}
Но лучше intervalID переназвать как-нибудь по-нормальному.
|
название intervalID я поменял на другое, более понятное.
и да заработало, но правда пишет при загрузке ошибку ReferenceError: \u0441learInterval is not defined
но теперь другая проблема встала, как удалить все переменные dialog_sender_id,dialog_receiver_id,dialog_pid,dia log_offset
перед загрузкой load_new_msg ?
просто присвоить им всем NULL ?
и наверное придется делать их глобальными, чтобы всегда одни и те же использовались?
правда как их уничтожить я не знаю, они у меня через var объявлены
Сообщение от newobject
|
Erolast,
Но я все равно не врубаюсь, как его код мог работать. Я не увидел в этом куске, где объявлен intervalID кроме этой самой функции, о которой разговор. Так почему же она у него не падает с ошибкой при первом же вызове? Значит intervalID должен быть где-то еще объявлен, правильно?
|
тут посмотри поймешь почему при 1 вызове нет ошибки
как остановить работу функции?
Последний раз редактировалось cOAPerator, 15.07.2014 в 18:04.
|
|
15.07.2014, 18:28
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
cOAPerator,
Я смотрел. У тебя первый запуск этой функции идет из
success: function(data){
29 data = JSON.parse(data);
30 $('#im_content_wrap').empty();
31 $('#im_content_wrap').append('<div id="im_content" style="">'+data.dataArray+'</div>');
32 animateToNewMsg();
33
34 // тут вызывается загрузка новых сообщений
35 load_new_msg(dialog_sender_id,dialog_receiver_id,d ialog_pid,dialog_offset);
36
37 }
До этого intervalID нигде не определен. Из ифа идет обращение к неопределенной переменной. На этом месте должна генерироваться ошибка. Может у тебя он определен в animateToNewMsg?
|
|
15.07.2014, 18:38
|
Аспирант
|
|
Регистрация: 04.01.2012
Сообщений: 78
|
|
Сообщение от newobject
|
cOAPerator,
До этого intervalID нигде не определен. Из ифа идет обращение к неопределенной переменной. На этом месте должна генерироваться ошибка. Может у тебя он определен в animateToNewMsg?
|
нет там только анимация, 1 строка и все.
при первом вызове не вызывается intervalID, он вызывается после того как отрабатывает функция load_new_msg, вот тогда и выходит ошибка 1 раз.
но это не важно.
надо как то уничтожить переменные все что попадают в функцию. я выше писал какие.
|
|
15.07.2014, 18:46
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Цитата:
|
Erolast,
Но я все равно не врубаюсь, как его код мог работать. Я не увидел в этом куске, где объявлен intervalID кроме этой самой функции, о которой разговор. Так почему же она у него не падает с ошибкой при первом же вызове? Значит intervalID должен быть где-то еще объявлен, правильно?
|
Я решил, что он как раз падает.
Цитата:
|
и да заработало, но правда пишет при загрузке ошибку ReferenceError: \u0441learInterval is not define
|
Перепиши заново clearInterval, у тебя там с русская.
Цитата:
|
надо как то уничтожить переменные все что попадают в функцию. я выше писал какие.
|
Зачем? Переменные уничтожит сборщик мусора сразу после того, как к ним потеряется доступ, то есть, после остановки замкнувшего их интервала.
|
|
15.07.2014, 18:53
|
Аспирант
|
|
Регистрация: 04.01.2012
Сообщений: 78
|
|
Сообщение от Erolast
|
Зачем? Переменные уничтожит сборщик мусора сразу после того, как к ним потеряется доступ, то есть, после остановки замкнувшего их интервала.
|
потому что эти же переменные используются без перезагрузки страницы, но почему то не попадают новые значения в них. остаются старые.
пробовал удалять/обнулять/перезаписывать
все равно остаются те значения которые попали при загрузке страницы
UPD: странно заработало удаление переменных вот такое:
dialog_sender_id = null;
dialog_receiver_id = null;
dialog_pid = null;
dialog_offset = null;
а до этого несколько раз перезагружал страницу, показывало всегда одинаковое значение в них.
Последний раз редактировалось cOAPerator, 15.07.2014 в 19:00.
|
|
|
|