gpt4 book ai didi

javascript - jQuery 无限页面滚动

转载 作者:行者123 更新时间:2023-11-28 08:09:20 24 4
gpt4 key购买 nike

我正在尝试在页面滚动上完成 ajax 内容加载,但在某些部分卡住了。

这是我的 PHP 代码:

//Fetch Total Record
$objDB = new DB;
$fetchCount = $objDB
->setStoredProc( 'petContestFetchImagesCount' )
->execStoredProc()
->parseXML();
$fetchCount = $fetchCount->data;

//Total number of results
$totalResults = $fetchCount->totalRecords;

//Records per page
$limit = 5;

//Total number of pages / calls we will make based on the results
$pages = ceil($totalResults/$limit);

//What page are we currently on?
$page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
'options' => array(
'default' => 1,
'min_range' => 1,
),
)));

$offset = ($page - 1) * $limit;

// Some information to display to the user
$start = $offset + 1;
$end = min(($offset + $limit), $total);

$nextlink = ($page < $pages) ? '<nav id="page_nav"><a href="?page=' . ($page + 1) . '"></a></nav>' : '';

//Fetch Entries
$objDB = new DB;
$submissions = $objDB
->setStoredProc( 'petContestFetchImages' )
->setParam("offset", $offset )
->setParam("rows", $limit )
->execStoredProc()
->parseXML();

从这一点来看,它知道需要的帖子数量,创建分页等。

我现在使用 infinateScroll 插件并按如下方式设置:

    var $container = $('[name=posts]')

$($container).isotope({
itemSelector: '.item',
layoutMode: 'masonry',
masonry: {
columnWidth: 10

}
})

$container.infinitescroll({
navSelector: '#page_nav',
nextSelector: '#page_nav a',
itemSelector: '.item',
pixelsFromNavToBottom: -Math.round($(window).height() * 0.9),
bufferPx: Math.round($(window).height() * 0.9),
loading: {
msgText: $container.attr("data-loading-message"),
finishedMsg: $container.attr("data-no-more-translators")
}
}, function(newElements) {
$container.isotope('appended', $(newElements))
})

})

当我向下滚动页面时,它正在正常加载内容。但是,它会到达最后一条记录,并且每次都只加载最后一条记录。如果我向上滚动然后再次向下滚动,它只会加载最后一条记录。

我测试了我的存储过程,当我说从记录 11(最后一个结果)开始并再给我 5 个时,它甚至不输出结果,它不返回任何数据。

不确定我在这里缺少什么,但在点击最后一条记录后,它不应该加载更多记录。

我用这个作为引用: http://blog.lingohub.com/developers/2013/09/endless-pages-scrolling-masonry/

编辑:

此客户端更改有效,但它不会阻止 ajax 调用触发,只是附加任何正常的结果。

var tmp = 1;
var pages = '<?php echo $pages; ?>

$container.infinitescroll({
navSelector: '#page_nav',
nextSelector: '#page_nav a',
itemSelector: '.item',
pixelsFromNavToBottom: -Math.round($(window).height() * 0.9),
bufferPx: Math.round($(window).height() * 0.9),
loading: {
msgText: $container.attr("data-loading-message"),
finishedMsg: $container.attr("data-no-more-translators")
}
}, function(newElements) {
if(tmp < pages){
$container.isotope('appended', $(newElements))
}
tmp++;
})

})

最佳答案

我认为您只需检查一下是否已达到最大页数?

  if($page<$pages){
//Fetch Entries
$objDB = new DB;
$submissions = $objDB
->setStoredProc( 'petContestFetchImages' )
->setParam("offset", $offset )
->setParam("rows", $limit )
->execStoredProc()
->parseXML();
}

然后更改下一个链接以回显高于 $pages 变量的一个额外链接。就像这样...

    $nextlink = ($page <= $pages) ? '<nav id="page_nav"><a href="?page=' . ($page + 1) . '"></a></nav>' : '';

关于javascript - jQuery 无限页面滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24471347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com