2012-03-22 56 views
0

我试图在网站中实现无限滚动功能。 Theres是一个div'#books',里面有多个div'.book'。到目前为止,这工作正常:

alreadyloading = false; 
nextpage = 1; 

$(window).scroll(function() { 
if ($('body').height() <= ($(window).height() + $(window).scrollTop())) { 
    if (alreadyloading == false) { 
     var url = "page"+nextpage+".html"; 
     alreadyloading = true; 
     $('#books').append($('#loadinggif').fadeIn(200)); 
     $.post(url, function(data) { 
      $('#books').append(data); 
      alreadyloading = false; 
      nextpage++; 
      $('#loadinggif').fadeOut(200); 
     }); 
    } 
} 
}); 

但是,#lodinggif即使在加载所有内容后仍保留在底部。任何方式我可以 检测到pagex.html不存在,然后隐藏#loadinggif?

回答

1

如果你读了jQuery.post()的文档,它说这个关于回调:

成功(数据,textStatus,jqXHR)
如果请求成功时执行的回调函数。

所以你不能错误的条件与$.post。但你可以通过使用长表格jQuery.ajax()而不是邮政速记捕获它们:

$.ajax({ 
    url: url, 
    type: 'post', 
    success: function(data, textStatus, jqXHR) { 
     $('#books').append(data); 
     nextpage++; 
     alreadyloading = false; 
     $('#loadinggif').fadeOut(200); 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     alreadyloading = false; 
     $('#loadinggif').fadeOut(200); 
    } 
}); 
1

除了数据之外,服务器还需要提供这些信息。所以你可以让服务器返回一个带有数据的XML或JSON文件,以及下一页是否真的存在。

相关问题