ユーザーが一番下に近いかどうかを確認することで、AJAXとJQueryを使用して動的に投稿をフェッチしようとしています。サーバーサイドはGAEのPythonです。
巻物を聞く:
this.config.window.on('scroll',this.loadContent);
1.下からの距離を確認する
2.次の10を取得するために、現在の投稿の数を含むajaxリクエストを送信します
3.results.check = trueは、サーバーに送信する投稿がこれ以上ないことを意味します。
loadContent: function(){
// 1
if($(document).height() - $(window).height() - $(window).scrollTop() < 1000) {
var posts = $('.troll').children('div').length;
data = 'loadmore=True&offset=' + posts; //2
$.ajax({
url: '/',
type: 'POST',
data: data,
dataType: 'json',
success: function(results){
if (results.check === 'true'){ //3
$(window).unbind('scroll');
return;
}
Post.insert10Values(results);
}
});
};
},
insert10Values: function(results){
var update = Handlebars.compile($('#troll10').html()),
troll10update = update(results);
$('div.troll').append( troll10update );
}
ここでの問題は、高速でスクロールすると、2つ以上のリクエストがサーバーに送信され、重複したエントリを取得することです。クライアント側でレート制限したい。