0

jQueryといくつかのAjaxを使用してカスタムの無限スクロールを設定しようとしています。これは私がこれまでに持っているものです:

        $(window).scroll(function() {
            if($(window).scrollTop() + $(window).height() == $(document).height()) {
                $.ajax({
                    type: "POST",
                    url: "posts/view/",
                    data: "",
                    success: function(results){
                        $(".container").after(results);
                    }
                })
            }
        });

それはすべてうまく機能し、ダンディですが、私が視覚化するのに苦労しているのは、データの次の「セット」または「ページ」を取得する方法です。私はPHPを使用しており、関数にはgetMore($ page = 1)のようなものがあります。しかし、jQueryに現在どのページが表示されているかを追跡させ、次のページを知るにはどうすればよいですか?jQuery内にある種のインクリメント関数を設定してURL(posts / page / 1 /など)を取得し、Ajaxを介して渡すURLに1を追加する必要がありますか?

私はこれを本当に考えすぎているように感じますが、もっと簡単な方法はありますか?

4

2 に答える 2

2

あなたはもっと簡単な方法で行くことができます。このように隠しフィールドを1つ置く

<input type hidden value="1" id="page" />

これで、すべてのajax送信の前に、その非表示フィールドからpagevalueを取得します。そして、すべてのajax成功関数の後に、このように非表示のフィールド値をインクリメントします。

$('#page').val(parseInt($('#page').val())+1)

ajax呼び出しは次のようになります

$(window).scroll(function() {
        if($(window).scrollTop() + $(window).height() == $(document).height()) {
            $.ajax({
                type: "POST",
                url: "posts/view/"+$('#page').val(),
                data: "",
                success: function(results){
                    $('#page').val(parseInt($('#page').val())+1);
                    $(".container").after(results);
                }
            })
        }
    });
于 2012-09-02T18:18:53.747 に答える
2

スクロールクロージャー内のページカウンターを使用するだけです。

(function(){

    //inner functions will be aware of this
    var currentPage = 0;

    $(window).scroll(function() {

        if($(window).scrollTop() + $(window).height() == $(document).height()) {

         $.ajax({
             type: "GET",
             url: "posts/view/" + currentPage,
             data: "",
             success: function(results){
                 $(".container").after(results);
             }
         })

         currentPage++;

         }

    });

})();​  

pageそして、渡したパラメータに従ってサーバースクリプトを変更します。取得するものがこれ以上ない場合は、空の本文で答えてください。

ちなみに、POSTデータの取得には適していませんので、GET代わりに使用してください。

于 2012-09-02T18:25:59.077 に答える