может быть, слишком поздно для меня, чтобы увидеть здесь ясное решение, но я подумал, что смогу получить какие-то мысли от кого-то, у кого есть мнение ...
сайт, над которым я работаюимеет длинный список сообщений пользователя.у меня есть все обработчики событий прокрутки, работающие на ajax в следующем пакете из 100 сообщений, когда вы достигнете или приблизитесь ко дну.
мой вопрос ... Как мне предотвратить следующий сценарий?
- UserX посещает сайт и загружает сообщения 1-100
- Еще 10 пользователей посещают сайт и добавляют еще 10 сообщений
- UserX прокручивает вниз изагружает сообщения 101-200, которые раньше были сообщениями 91-190
- UserX заканчивается дубликатами сообщений 91-100 на странице
я включу урезанныйНиже приведена версия моего кода на тот случай, если она поможет кому-нибудь еще по
$.ajax({
type:'POST',
url:"/userposts.php",
data:{ limit: postCount },
success:function(data) {
$("postsContainer").append(data);
if ( $("postsContainer").find("div[id='lastPostReached']") ) {
// unbind infinite scrolling event handlers
}
},
dataType:'html'
});
в моем PHP-скрипте. По сути, у меня есть следующее:
if ( ! isset($_POST["limit"]) ) {
$sql .= " LIMIT 101"; // initial request
} else {
$sql .= " LIMIT {$_POST["limit"]},101
}
$posts = mysql_query($sql);
while( $post = mysql_fetch_assoc($posts) ) {
/* output formatted posts */
}
// inform callback handler to disable infinite scrolling
if ( mysql_num_rows($posts) < 101 ) {
echo '<div id="lastPostReached"></div>';
}
Это дает мне бесконечную прокрутку, приятную и легкую1025 * но как я могу предотвратить гипотетические дубликаты, которые будут отображаться при добавлении новых записей в таблицу между запросами ajax?