Во-первых, это, вероятно, приведет к плохому пользовательскому опыту, если кто-то занят, делая что-то с таблицей, например выделение текста, когда все внезапно перерисовывается.Если вам необходимо перезагрузить все данные, обновите только те строки, которые изменились.Вы можете достичь этого с помощью встроенных в JavaScript манипуляций с таблицами или любого количества плагинов jQuery .
Во-вторых, если это возможно в вычислительном отношении, это будет гораздо более эффективно с точки зрения передачи данных.и пользовательский опыт, если бы вы могли рассчитать, какие строки изменились, и отправлять только эти строки.Назначьте глобально уникальный id
каждой строке в вашей таблице, чтобы вы могли легко обновить только эту строку с помощью jQuery.С помощью этой техники также легко добавить некоторые визуальные подсказки, которые были обновлены в конкретной строке, например, небольшое изменение цвета, что часто приятно (где применимо).
Мой любимый способ делать подобные вещи(без кометы):
- Опрос каждые 10 секунд на страницу, которая возвращает только то, изменились ли данные.Проверить это гораздо эффективнее, чем отправлять все данные постоянно.Вам нужно только сохранить поле даты и времени, содержащее, когда в последний раз изменилось значение, и сравнить с последней датой и временем, полученными браузером (отправьте это вместе с запросом).
- Если он изменился, используйте jQuery, метод
trigger
отправляет другой ajax-запрос, на этот раз ожидая список строк, которые изменились с того времени. - Обновление затронутых строк.
Обновление
На основе ваших комментариев я просто добавлю несколько дополнительных заметок.
- Для опроса вы, вероятно, будете использовать метод jQuery .get () .Вы сказали, что используете Django, поэтому я предлагаю использовать json, что означает, что, по вашему мнению, вы будете возвращать данные JSON.Вот простой учебник , с которого можно начать.
- В функции обратного вызова для успеха проверьте, есть ли новые данные с логическим значением, возвращенным из вашего представления Django, и, если есть, вызовите функцию, которая делает новый вызов ajax, чтобы получить соответствующие данные (снова,объект JSON).
- С этим объектом JSON пройдитесь по каждому элементу, который необходимо обновить, и используйте функцию jquery
text
или один из плагинов таблицы jQuery для обновления строк.
Если вы новичок в этом, это довольно много и много гуглит, но это хороший, чистый способ сделать это.