Php 获取jquery ajax autoscroll的下一组数据

Php 获取jquery ajax autoscroll的下一组数据,php,jquery,ajax,infinite-scroll,Php,Jquery,Ajax,Infinite Scroll,我正在尝试使用jQuery和一些Ajax设置一个自定义的无限滚动条。这就是我到目前为止所做的: $(window).scroll(function() { if($(window).scrollTop() + $(window).height() == $(document).height()) { $.ajax({ type: "POST",

我正在尝试使用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


我觉得我真的想得太多了,有更简单的方法吗?

你可以选择更简单的方法。 像这样放置一个隐藏字段

<input type hidden value="1" id="page" />
$(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);
                }
            })
        }
    });
您的ajax调用将如下所示

<input type hidden value="1" id="page" />
$(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);
                }
            })
        }
    });

你可以用更简单的方法。 像这样放置一个隐藏字段

<input type hidden value="1" id="page" />
$(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);
                }
            })
        }
    });
您的ajax调用将如下所示

<input type hidden value="1" id="page" />
$(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);
                }
            })
        }
    });

只需在滚动闭包内使用页面计数器:

(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++;

         }

    });

})();​  
并根据要传递的
页面
参数更改服务器脚本。 如果没有更多的东西可以取回,就用一个空的身体来回答


顺便说一句,
POST
不适合检索数据,请使用
GET

只需在滚动闭包内使用页面计数器即可:

(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++;

         }

    });

})();​  
并根据要传递的
页面
参数更改服务器脚本。 如果没有更多的东西可以取回,就用一个空的身体来回答



顺便说一下,
POST
不适合检索数据,请改用
GET

如何获取隐藏字段的值以放入Ajax调用中?text()?如果可以使用好的ol'
int
,为什么要在DOM中插入此项?在代码中,您已经在scroll函数中定义了var currentpage。因此每次滚动时,您的currentpage都将变为0。这不是Op想要的?@ashirvadsing感谢您的指出,我现在编写了正确的闭包。如何将隐藏字段的值放入Ajax调用中?text()?如果可以使用好的ol'
int
,为什么要在DOM中插入此项?在代码中,您已经在scroll函数中定义了var currentpage。因此每次滚动时,您的currentpage都将变为0。这不是Op想要的吗?@AshirvadSingh谢谢你指出,我现在写了正确的闭包。仍然在试图弄清楚这是否只是我,但currentPage似乎从未增加(但它确实成功地检索了ajax数据)。既然你修改了代码,我似乎根本无法调用它。既然你已经包装了整件事,我是否需要特别请求函数?@bswinnerton包装只是为了防止
currentPage
var弄乱外部作用域-只有匿名包装函数会知道-你可以将这样的函数体放在
$(function(){…})中
像往常一样,你会成功的。明白了!增量应该在after()函数之前。您可能只想为将来的用户更新这个。非常感谢。对不起,我的代码有一个错误。在ajax调用之后,最终版本(我确信它正在工作)具有currentPage++。这样就不会有重复的页面请求。仍在试图找出这是否只是我,但currentPage似乎从未增加(但它确实成功地检索到ajax数据)。现在您已经更改了代码,我似乎根本无法调用您的代码。既然你已经包装了整件事,我是否需要特别请求函数?@bswinnerton包装只是为了防止
currentPage
var弄乱外部作用域-只有匿名包装函数会知道-你可以将这样的函数体放在
$(function(){…})中
像往常一样,你会成功的。明白了!增量应该在after()函数之前。您可能只想为将来的用户更新这个。非常感谢。对不起,我的代码有一个错误。在ajax调用之后,最终版本(我确信它正在工作)具有currentPage++。这样就没有重复的页面请求。