предотвращение дубликатов бесконечная прокрутка ajax loader

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

на сайте, над которым я работаю, есть длинный список постов пользователя. у меня все обработчики событий прокрутки работают на ajax в следующей партии из 100 постов, когда вы достигаете или приближаетесь к нижней части.

мой вопрос в том... Как я могу предотвратить следующий сценарий?

  1. ПользовательX заходит на сайт и загружает посты 1-100
  2. Еще 10 пользователей заходят на сайт и добавляют еще 10 постов
  3. ПользовательX прокручивает страницу в самый низ и загружает посты 101-200, которые раньше были постами 91-190
  4. В итоге у пользователяX на странице появляются дубликаты постов 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>';
}

Это дает мне бесконечную прокрутку, но как я могу предотвратить гипотетические дубликаты, которые появятся, когда новые записи будут добавлены в таблицу между ajax запросами?

6
задан overeasy 5 January 2012 в 08:17
поделиться