この関数を無限スクロールに使用しようとしています:
<script type="text/javascript" charset="utf-8">
(function() {
var page = 1,
loading = false;
function nearBottomOfPage() {
return $(window).scrollTop() > $(document).height() - $(window).height() - 200;
}
$(window).scroll(function(){
if (loading) {
return;
}
if(nearBottomOfPage()) {
loading = true;
page++;
$.ajax({
url: '/paginate?page=' + page,
type: 'get',
dataType: 'script',
success: function(data) {
$(".res-list").append(data.responseText);
$(window).sausage('draw');
loading = false;
}
});
}
});
$(window).sausage();
}());
</script>
http://localhost:3000/paginate?format=js&page=2
問題は、完全に機能しているにもかかわらず、データを順序なしリストに追加していないことです。
次の行の下に console.log を配置するとif(nearBottomOfPage()) {
、トリガーされるので、機能が正常に動作していることがわかります。それでも、console.log を成功した場合: ajax 関数の場合はトリガーされません....さらに、コンソールを介して ajax コマンドを実行すると、「responseText」で必要なものが正確に返され、成功コード 200 が返されます。 ...手動で実行したときに200が正常に返された場合、コンソールログに成功メッセージがトリガーされない理由がわかりません..
コントローラーはこちら
def paginate
@resources = Resource.order(:created_at).page(params[:page]).per(20)
respond_to do |format|
format.js
end
end