Задача такая.
У меня имеется n div'ов, каждый из которых должен обновляться по аяксу с некоторой частотой характерной только для него. Для этого у меня имеется массив divArr, в котором содержатся объекты, содержащие сслыку на div, его частоту и некоторые другие данные, для данной задачи не существенные.
Каждые 10 мс у меня запускается функция, которая содержит цикл, проходящий все элементы массива, и если для какого-то из них пришло врем обновляться - посылает запрос.
А вот дальше начинаются сложности. Собственно, вопрос состоит в том, как в обработчик успешного получения данных запихать ссылку на этот самый div, ведь к моменту вызова обаботчика divArr[i] содержит уже совсем другой объект..
function f(){
var t = (new Date()).getTime();
for(var i in divArr){
if(t - divArr[i].lastQ > divArr[i].freq){
divArr[i].lastQ = t;
$.ajax({
success: function(data){
divArr[i].cell.text(data)
}
});
}
}
}
Примечание:
Блин, когда уже гуглотвевты перестанут убирать пробелы в начале строк.. =(
Примечание:
> Юзай setTimeout для каждого дива, а не проходи массив постоянно.
да ну нафик, у меня этих дивов сотни. Сотни таймаутов, висящих фоном.. Хотя, конечно, еще вопрос что лучше..
Примечание:
> Если у тебя массив специально создан для хранения ссылок на дивы, каким макаром в divArr[i] может оказатся что-то другое? о_О
Ну, в смысле сменился i уже.
Примечание:
> Как костыль: передавать i через ajax и его же возвращать скриптовым сервером
Как сказали мне старшие товарищи, это не костыль, а как раз самое правильное поведение для вёба.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.