0

この関数を無限スクロールに使用しようとしています:

<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
4

1 に答える 1

0

次のコードを使用しました。

$.ajax({ 
  url: '/paginate?format=js&page=' + page, 
  type: 'get', 
  dataType: 'text', 
  success: function(data) { 
    $(".res-list").append(data); 
    loading = false; 
  } 
});
于 2012-04-30T15:07:13.270 に答える