Php 获取jquery ajax autoscroll的下一组数据
我正在尝试使用jQuery和一些Ajax设置一个自定义的无限滚动条。这就是我到目前为止所做的: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",
$(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++。这样就没有重复的页面请求。