Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Трабл с prototype + ajax, Ф-ия onComplete выполняется только 1 раз 
V
    Опции темы
Goganchic
Дата 13.12.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Делаю такой класс (ну это только набросок, так что особо не ругайте):
Код

//Updater class
var Updater = Class.create();
Updater.prototype = Object.extend(new Ajax.Request(), {
    initialize: function(container, frequency, elementType, rowProcessor) {
        this.options = {method: 'get'};

        this.container = $(container);
        this.elementType = elementType;
        this.rowProcessor = rowProcessor;
        this.transport = Ajax.getTransport();
        this.options.frequency = frequency;
        this.options.onComplete = (function () {
                alert("complete");
                rows = this.transport.responseXML.getElementsByTagName('row');
                size = rows.length;
                for (i = 0; i < size; i++) {
                    this.rowProcessor(this.container, rows[i]);
                }
            }).bind(this);
        this.options.onException = (function(){alert("error");});
    },
    startUpdate: function() {
        new PeriodicalExecuter((function () {
            var time = new Date();
            var timeStr = time.getHours() + '-' + time.getMinutes() + '-' + time.getSeconds();

            this.request("reqprocessor.php?elType=" + this.elementType + "&lastUpdate=" + timeStr);
        }).bind(this), this.options.frequency);
    },
});
                                                                                                            

Как видно из класса, это делодолжно после вызова функции startUpdate вызываться каждые this.options.frequency секунд.
Запускаю так:
Код

<html>
    <head>
        <script language="javascript" src="prototype.js"></script>
        <script language="javascript" src="sblib.js"></script>
        <title>Test Page</title>
        <script language="javascript">
            function updateTable(entity, row) {
                alert(row.getAttribute('param1'));
            }

            testUpdater = new Updater('test_table', 3, 'test_type', updateTable);
            testUpdater.startUpdate();
        </script>
    </head>
    <body>

    </body>
</html>

Ф-ия updateTable почему-то вызывается только 1 раз, в то время как все Ajax запросы успешные (проверял с помощью Firebug-а) и ф-ия this.request отрабатывает для каждого из них. Данные от сайта приходят одни и те же, т.е. без именений. Почему ф-ия updateTable вызывается только 1 раз?
PM Jabber   Вверх
Goganchic
Дата 18.12.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Разобрался

Добавлено через 20 секунд
надо было читать сырки прототайпа smile
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0857 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.