Обновление html таблицы после ajax успеха - PullRequest
0 голосов
/ 13 июля 2020

Когда мы выполняем деструктивные операции с таблицами базы данных (вставка / обновление / удаление) с использованием ajax, DOM должна отражать это изменение. Я вижу два обычно используемых подхода.

  • Когда деструктивная операция с базой данных завершается успешно, манипулируйте строками в html таблице, чтобы отразить изменение
  • Когда деструктивная операция с базой данных завершается успешно, refre sh таблица html путем выполнения другого ajax запроса

Предположим, пользователи A и B обращаются к таблице из 5 строк. Затем A удаляет первую строку, а B удаляет вторую строку. При использовании подхода манипулирования DOM A не увидит, что вторая строка удалена, а B не увидит, что первая строка удалена. Эту проблему можно устранить с помощью подхода refre sh, но оба пользователя могут видеть полные обновления только тогда, когда они сами выполняют операцию.

Какой подход лучше всего?

1 Ответ

1 голос
/ 13 июля 2020

Проблема не может быть устранена простым подходом «refre sh» (вариант 2).

Скажем, оба A и B просматривают таблицу. Теперь A удалил строку, если вы обновите sh страницу A, она будет обновлена ​​только в окне просмотра A. Но код, работающий на B, не будет знать в момент удаления строки. Он увидит обновление только после того, как удалит одну строку в соответствии с вариантом 2 или, очевидно, обновит браузер sh.

Одно быстрое решение - обновить sh данные таблицы с помощью запроса Ajax в фиксированный интервал. Например: 5 секунд.

Чтобы таблица действительно отражала данные базы данных в реальном времени в любой момент для каждого пользователя, вы должны использовать websocket. Для этого вам понадобятся и сервер реального времени, и клиент.

Вы можете реализовать часть или функцию всего веб-приложения примерно в Socket.IO , чтобы сделать эту часть в реальном времени, пока оставив другую часть такой же, как и у существующего технологического стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...