JavaScript « Обновление таблицы с помощью JavaScript

Добрый день!

Как посоветуете делать обновление не всей таблицы, а только изменившихся ячеек + добавление строк в таблицу, которых там еще нет + удаление тех, которые есть, но на сервере уже удалены?

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

Я делаю это в 3 шага, и, на мой взгляд, слишком ресурсоемко.

1)Цикл по массиву из AJAX -> цикл по строкам таблицы -> добавление индекса записи из массива AJAX в массив найденных строк если айдишники записей совпали -> цикл по ячейкам сверяемой строки (на изменение какой-либо ячейки) -> обновление конкретной ячейки если данные поменялись

2)цикл по строкам таблицы -> цикл по массиву из AJAX -> удаление лишних строк

3)цикл по массиву из AJAX -> цикл по массиву найденных записей -> если запись не присутствует в массиве найденных, тогда добавляем новую строку


Как можно сделать то же самое, но чтобы работало быстрее?

1 ответов


Назначить всем строкам уникальные идентификаторы.
На сервер отправлять данные в виде Id - Действие - Данные.
На клиента отправлять данные в таком же виде.
Например:
15 - Add - {"Название", "Описание"}
13 - Modify - {"Новое название", "Новое описание"}
22 - Delete - {"", ""}

Это концепция. Реализация зависит от технологии на клиенте (чистый JavaScript, jQuery и т.п.).