2012-03-18 7 views
0

次の順番のページ番号を見つけて、ユーザーが画面の一番下に当たったらページの下部にロードするコードがあります。no .HTMLファイルのローディングバーを非表示にしました

負荷のdivがダウンし、それがロードされ、アップ、それが完了したら...それがに設定されているようスライド「表示:なし」何が必要デフォルト

によっては、基本的には、そこにどのコードの行ではありませんロードするページが見つからない場合は、#loading divを非表示にします。 "var url =" page "+ nextpage +" .html ";"新しいページを見つけます...「page 2.html、page3.html」というタイトルです。

ご協力いただければ幸いです。その後、AJAX要求は失敗しますそのようなファイルが存在しない場合は、あなたの中から必要なものを行うことができますので、私は、

alreadyloading = false; 
nextpage = 2; 

$(window).scroll(function() { 
if($(window).scrollTop() + $(window).height() == $(document).height()) { 
    if (alreadyloading == false) { 
     $("#loading").slideDown(); 
     var url = "page"+nextpage+".html"; 
     alreadyloading = true; 

     $.post(url, function(data) { 
      $('#newcontent').children().last().after(data); 
      alreadyloading = false; 
      nextpage++; 
      $("#loading").slideUp(); 
     }); 

    } 
} 
}); 

答えて

1

...それは簡単ですが、私はどこにも解決策を見つけることができないと仮定しています」失敗 "ハンドラ。それを指定できるようにするために、あなたは一つの解決策は、あなたに必要なすべてのオプションを与える、複数の構成$.ajaxを使用して$.postを使用してから移動することです:

$.ajax({ 
    type: 'POST', 
    url: url, 
    success: function(data) { 
     $('#newcontent').children().last().after(data); 
     nextpage++; 
    }, 
    complete: function() { 
     alreadyloading = false; 
     $("#loading").slideUp(); 
    } 
}); 

completeコールバックはどんな実行されませんコードが含まれています要求に伴って発生します。 コールバックはcompleteの前に実行されますが、要求が成功した場合に限ります。

+0

'jQuery.post'は' fail() 'を使ってエラーハンドラをバインドできるjqXHRオブジェクトを返します。 – Matt

+0

@Matt:jqXHRオブジェクトは、同じ効果を達成するために使用できる 'complete'メソッドも提供しているようです。私は、これらのアプローチのどれも、具体的な言及に値するほど十分に異なるとは思わない。 – Jon

+0

ユーザーの「読み込みのフィードバック」を開始するために、#loadingが 'complete:'の上にスライドすることを追加する必要がありますか? これは現在のコードの代わりに使用できますか? ありがとうございました! – JByrne

関連する問題