AJAX и актуальные данные с сервера

ZCFD

Мой дом здесь!
Регистрация
16 Янв 2008
Сообщения
989
Реакции
458
Доброго

Задача: на странице таблица, куда выводится 4-5 колонок из БД. Добавление, редактирование, удаление - через ajax. Выдал формочку, отправил запрос, получил ответ, дописал в таблицу. Это понятно.

Нужно реализовать отображение на странице актуальных данных из БД даже если эти изменения делал другой пользователь с другой такой же страницы. Т.е. в базе обновились данные - это отразилось на странице.

Как это делается? Алгоритм не ясен. (видимо, предполагается, что пользователей несколько - в этом и затык).

Пока вижу решение в промеждуточнойт аблице, куда пишется идентефикатор сессии-пользователя и команды, которые нужно отправить клиенту, плюс флаг получения. И по таймауту опрашивать эту таблицу. Но как-то коряво выглядит. Может есть решения, но я просто не знаю.

Спасибо за помощь

P.S. не знал в какой раздел, т.к. вроде и JS и вроде не только он.
 
как вариант - писать не все, а только флаг что данные обновились... соответственно выдавать обновленные данные лишь в том случае если пользователь нажал "показать новое"
 
наверняка где-то в базе хранится время изменения таблицы (строки в таблице), можно кроме обновленных своих данных возвращать время последнего изменения таблицы, при последующей отправке сравнивать это время с хранящимся в базе, если отличаются - то все строки измененные после этого времени обновить...
 
Пока вижу решение в промеждуточнойт аблице, куда пишется идентефикатор сессии-пользователя и команды, которые нужно отправить клиенту, плюс флаг получения. И по таймауту опрашивать эту таблицу. Но как-то коряво выглядит. Может есть решения, но я просто не знаю.
Возвращайте в ответе сервера, вместе с данными для таблицы, время их последнего изменения. По таймауту отправляйте AJAX запрос на сервер с этим временем. На сервере ищите данные которые были опубликованы после указанного в запросе времени и отдавайте их. Вот и все. Время так же можно хранить в сессии.
 
Я бы просто поставил яваскрипт таймер на секунду и каждый раз сравнивал хеш таблицы в браузере и хеш таблицы в бд. Если они разные, перерисовываю таблицу.
 
Назад
Сверху