2

この無限スクロールスクリプトを希望どおりに機能させようとしています。ただし、loadmore.phpファイルで新しい投稿を検出する方法がわからないため、ページに既に投稿されている投稿は表示されません。

<script type="text/javascript">
$(window).scroll(function()
{
    if($(window).scrollTop() == $(document).height() - $(window).height())
    {
        $('div#loadmoreajaxloader').show();
        $.ajax({
        url: "loadmore.php",
        success: function(html)
        {
            if(html)
            {
                $("#postswrapper").append(html);
                $('div#loadmoreajaxloader').hide();
            }else
            {
                $('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
            }
        }
        });
    }
});
</script>
4

4 に答える 4

5

どの投稿が新しいかを「把握」しようとしないでください。JavaScriptで、最後にロードされた投稿(idなどを介して)を認識していることを確認し、それを「loadmore.php」スクリプトに送信します。

Webサービス(loadmore.php)はステートレスのままであり、フロントエンド(javascript)は状態(最後にロードされたID)を認識している必要があります。

于 2012-08-08T12:37:38.963 に答える
1

簡単に言えば、その情報を保存する必要があります。ロードしようとしている情報に何らかのシーケンスがあると仮定すると、最後に返されたIDを保存し、その情報をPHPスクリプトの新しい情報の開始点として渡すことができます。

于 2012-08-08T12:37:31.963 に答える
0

ロードしようとしている要素のリストの最後のIDまたは最後のタイムスタンプを含む変数をクライアントで作成しないのはなぜですか。次に、この値をサーバーに渡すだけで、phpファイルでこの値を使用できます。

非常に一般的な例は、最後に取得されたタイムスタンプです。新しいフィードが必要な場合は、このタイムスタンプをサーバーに送信するだけで、サーバーは、たとえば、今回より古い次の5つのフィードを取得します。

于 2012-08-08T12:39:13.580 に答える
0

これを行うための最良の方法は、オフセットをフィードできるページを作成することです。これにより、新しい投稿が照会されます。これは私がワードプレスでこれを行った方法です:

  1. ページにオフセット(URL)をフィードしていることを確認します:http://yourwebsite.com/more/ ?offset = 20
  2. 次に、オフセットを取得し、オフセットを使用してクエリを実行します。
  3. そうすると、同じ結果は得られません...

私はこれが曖昧に聞こえることを知っています-それで私はコードでチュートリアルを書きました-見てみませんか?http://benjaminpotter.org/infinite-scroll/

于 2012-09-05T00:32:31.250 に答える