Прокрутка страницы вниз с данными в реальном времени — PHP

#php #jquery #pagination #jquery-pagination

#php #jquery #разбивка на страницы #jquery-разбивка на страницы

Вопрос:

Я создал прокрутку страницы вниз, используя php и jquery, и это работает.

Моя проблема в том, что мы предполагаем, что у нас есть 20 данных, и мы находимся на первой странице (10 данных на страницу), пользователь хочет отобразить вторую страницу, в этот момент 3 новых данных были созданы и добавлены в базу данных.

Таким образом, результат второй страницы будет другим, и некоторые данные на первой странице будут отображаться снова.

Как я могу это понять?

Ответ №1:

Пусть пользователь решает

Большинство сайтов с бесконечной прокруткой (которые отображают больше контента при прокрутке вниз, как в вашем вопросе) сортируются в хронологическом порядке, что означает, что новый контент будет добавлен только в начало или конец списка. Теперь содержимое, добавляемое в конец результатов, в большинстве случаев не вызывает беспокойства, поэтому основной проблемой здесь является отображение элементов, которые должны отображаться перед уже отображаемыми элементами.

(В качестве примечания, я не имею дело с контентом, который должен отображаться между уже отображаемыми результатами, поскольку динамическое изменение порядка элементов является кошмаром для пользователей, и его следует избегать, если это возможно.)

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

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

Резюмируя:

  • если данные добавлены в конец набора: ничего не нужно делать, продолжайте загружать содержимое динамически.
  • если данные добавлены в начало набора: продолжайте загружать содержимое с того места, где вы остановились, но отобразите уведомление, которое может загрузить новые данные.
  • если данные добавлены в середину набора: то же, что и выше, продолжайте загрузку и уведомите пользователя. Кроме того, избегайте этого сценария, если это возможно.

Некоторый псевдокод для иллюстрации

Предполагая, что на вашем сайте работает бесконечная прокрутка, и большая часть этого уже реализована.

 $dataList.on('scroll', function() {

    var newData = false;

    if (endOfPage) {

        $dataList.append(getNextInList())

        newData = checkForNewData();

        if (newData) {

            newDataNotification();
        }
    }
});