#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();
}
}
});