Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > Ajax (отлов события изменения записи в бд) + |
Автор: FCCStepan 23.1.2008, 12:10 |
Затрудняюсь 2х словах уложить суть вопроса, по этому название темы не очень раскрывает суть проблемы. И так. имеем. 1) Клиент открывает сайт, авторизируется, задает вопрос и сворачивает окно браузера 2) никаких событий обновления страницы не происходит. 3) Клиент получает ответ на свой вопрос (по сути это изменение записи в бд) 4) На компьютере клиента появляется окошко, извещающее клиента о поступлении ответа. На сколько я понимаю, с использованием аякса, можно без обновления содержимого страницы (нажатий f5 или передвижений по сайту) отловить событие (в данном случае - событие появления ответа). Далее если запрос аякса вернул 1цу -нужно отобразить красивое окошко - типа тех, которые выводят downloader'ы (при звершении всех загрузок). Для этого мы берем JS и развлекаемся с ней. В принципе это одна из схем. Вторая схема - это тулбар, который ловит все эти события. Еще идеи, варианты, пожелания, предложения есть? Заранее спасибо. |
Автор: Sardar 23.1.2008, 13:14 |
Ajax это polling метод, т.е. скрипт опрашивает сервер через промежутки времени. Если окно закрыли, то и скрипт убьётся. Тулбар штука не простая, его как плагин нужно ставить, что само по себе не удобно (именно для твоей задачи). К тому же тулбар имеет гораздо больше прав, к примеру может читать содержимое других страниц. Вывод: читаем любую из http://www.google.ru/search?aq=-1&oq=&complete=1&hl=ru&newwindow=1&q=ajax+tutorial&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr= статей о ajax'е, понимаем принцип работы. |
Автор: FCCStepan 24.1.2008, 10:48 |
Sardar, неудобность тулбара - согласен. Про закрытие окна - естественно тоже в курсе. про polling можно по подробнее ? хотябы целиком название, что бы было от чего отталкиваться. Есть какие ни будь принципиально другие подходы? |
Автор: Sardar 24.1.2008, 12:33 |
polling - опрашиваем сервис через некоторые промежутки времени, в противоположность к events - получаем уведомления о смене состояния. События от сервера не получить (без постоянных коннектов), все ajax (и не только) приложения опрашивают сервер сами. Довольно тяжёлый способ это держать коннект открытым (в iframe к примеру). Сервис каждую секунду отправляет пробелы или lag-event'ы, что бы браузер не закрыл соединение. Как только возникает событие - отправляется вызов метода на стороне JS. Да, это гораздо более реактивно, чем самому опрашивать (пока сеть не лагает), но хавает ресурсы на сервере (продолжительный коннект штука не приятная). Главное, что тебе это не нужно ![]() ![]() Если изменения вызваны тобой, то естественно ты сразу можешь их отобразить, не дожидаясь подтверждения с сервера. Как только ответ придёт, обновишь страницу в реальное состояние, уведомив пользователя если что-то пошло не по сценарию. |
Автор: FCCStepan 28.1.2008, 07:05 |
Спасибо, это все понятно. Как на аяксе послать запрос серверу с учетом бездействия пользователя? Тоесть как завести таймер, который будет выполнять запрос? дальше со всем остальным я уже разберусь сам, там понятно. |
Автор: Sardar 29.1.2008, 00:40 |
setInterval(func, milliseconds) или setTimeout(func, milliseconds), где func это вызываемая функция (можно анонимную function() {..), а milliseconds соответственно тысячные секунды. Вбей в поиск, масса примеров. |