PHP HTML JS 分页

问题描述 投票:0回答:1

我有一个反馈页面,看起来像这样(我只在每页显示 1 条评论,看看分页是否正常工作。否则我会显示更多): Pagination 反馈来自 mysql 数据库,目前每页过滤 1 个反馈。 在我的代码中,我放置了逻辑,以便当我单击下一页时,它可以使用从另一个文件中的 PHP 函数发回的 GET 功能正确显示注释。 这是一个小代码示例: 在我的主文件中,我调用一个名为 paginate 的函数并将其打印出来

<?php  print paginate('', '?courseid='.$courseid.'&page=', $nbrPages, $current); ?>

在另一个文件的主函数中,我有类似的东西,它用 PHP 变量逐一构造分页。

function paginate($url, $link, $total, $current, $adj=5){ 
    $prev = $current - 1; 
    $next = $current + 1;
    $penultimate = $total - 1; 
    $pagination = '';
    if ($total > 1) {
    $pagination .= "<div class=\"row pagination_row\">\n";
    $pagination .= "<div class=\"col\">\n"; 
..

我面临的问题是:当我单击“下一步”或我想去的任何页面时,有一个刷新功能会滚动到顶部,用户必须向下滚动才能看到评论。所以我把这段代码放在 JavaScript 中以重新滚动回评论:

<script>
    document.addEventListener("DOMContentLoaded", function (event) {
        
        var scrollpos = sessionStorage.getItem('scrollpos');
        if (scrollpos) {
            window.scrollTo(0, scrollpos);
            sessionStorage.removeItem('scrollpos');
        }
    });

    window.addEventListener("beforeunload", function (e) {
        sessionStorage.setItem('scrollpos', window.scrollY);
    });
</script>

如果工作正常,但每次都会出现微冻结,这是有道理的,因为标准行为是刷新后向上滚动,而这里的脚本会再次向下滚动。我还看到过这个 JQuery 类

preventDefault();
它根本阻止页面滚动,但在我的情况下没有任何刷新。有谁知道如何刷新而不进行向上滚动和向下滚动操作?那么看起来是不是更加流畅了呢?谢谢

javascript php html jquery
1个回答
0
投票

不要通过 PHP 打印评论,而是考虑使用 JS fetch API 从服务器上托管的 PHP 文件动态获取评论数据。这将阻止页面刷新,因为只有少数元素会被更新,而不是刷新整个 DOM。你的 PHP 后端文件应该返回 JS 可以解释和加载的 JSON 格式的数据。

安全注意事项:确保使用 PHP 函数转义评论数据中可能存在的任何恶意 HTML 代码

htmlspecialchars()

© www.soinside.com 2019 - 2024. All rights reserved.