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

Тема в разделе "Как сделать...", создана пользователем ZCFD, 19 июл 2012.

  1. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    Доброго

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

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

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

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

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

    P.S. не знал в какой раздел, т.к. вроде и JS и вроде не только он.
     
  2. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    как вариант - писать не все, а только флаг что данные обновились... соответственно выдавать обновленные данные лишь в том случае если пользователь нажал "показать новое"
     
  3. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    наверняка где-то в базе хранится время изменения таблицы (строки в таблице), можно кроме обновленных своих данных возвращать время последнего изменения таблицы, при последующей отправке сравнивать это время с хранящимся в базе, если отличаются - то все строки измененные после этого времени обновить...
     
  4. SiZE

    SiZE Постоялец

    Регистр.:
    31 янв 2010
    Сообщения:
    51
    Симпатии:
    10
    Возвращайте в ответе сервера, вместе с данными для таблицы, время их последнего изменения. По таймауту отправляйте AJAX запрос на сервер с этим временем. На сервере ищите данные которые были опубликованы после указанного в запросе времени и отдавайте их. Вот и все. Время так же можно хранить в сессии.
     
  5. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    Я бы просто поставил яваскрипт таймер на секунду и каждый раз сравнивал хеш таблицы в браузере и хеш таблицы в бд. Если они разные, перерисовываю таблицу.