美文网首页
页面懒加载数据

页面懒加载数据

作者: 码农工号9527 | 来源:发表于2023-02-09 20:20 被阅读0次

文章来源:(数据懒加载案例)[https://www.freesion.com/article/47051092126/]

思路:滑动滚轮,当每次页面滚动条滑动至底部加载一定数量的数据。

conn.php 是连接数据库的文件
首先,在MySQL数据库创建了300条数据
addItem.php

<?php
    include "./conn.php";
    //在数据库中创建300条数据
    for($i=0;$i<300;$i++){
        $sql="INSERT INTO `product`( `title`, `price`, `num`, `pic`, `details`) VALUES ('test$i','100',20,'./images/$i.jpg','xxxxxx')";
        $conn->query($sql);
    }
    $conn->close();
?>

后端接收到前端发送过来的page数据进行数据库操作
getpage.php

<?php
    include "./conn.php";

    $currentPage=$_REQUEST['page'];// 当前页数
    $pageSize=20;// 每一次查询的数据数量
    $stratRow=($currentPage-1)*$pageSize;
    $sql="select * from product limit $stratRow,$pageSize";
    $res=$conn->query($sql);
    $arr=array();
    while($row=$res->fetch_assoc()){
        array_push($arr,$row);//将返回的结果集放入数组
    }
    $json=json_encode($arr);
    echo $json;
    $conn->close();//关闭数据库
?>

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.js"></script>
    <script>
        $(function(){
            //采用闭包的写法来存储p的值
            var page=(function(){
                var p=1;
                return {
                    get:function(){
                        return p;
                    },
                    plus:function(){
                        p++;
                    }
                }
            })();

            getData();//先触发一次加载数据的函数,先让页面中显示20条数据

            //1.思考:什么时候加载数据?
            //当滚动条拉到底部 加载数据
            $(window).on('scroll resize',function(){
                // 2.思考:如何判断滚动条拉到了底部
                // 滚动条已滚动的距离+窗口高度 === 文档高度

                let $scrollTop=$(window).scrollTop();//滚动条已滚动的距离
                let $documentHeight=$(document).height();//文档高度
                let $windowHeight=$(window).height();//窗口高度

                if($scrollTop+$windowHeight===$documentHeight){//滚动条拉到底部时
                    page.plus();//页数进行+1
                    getData();//加载数据
                }

            })


            function getData(){
                //发送ajax请求 加载数据
                $.ajax({
                    type:'get',
                    url:'../interface/getpage.php',
                    data:{
                        page:page.get()
                    },
                    dataType:'json',
                    success:function(res){//请求到的res是一个数组
                        //为什么要进行res.length的判断?
                        //因为当数据全部加载完成,拖动滚动条至顶部,还是会发送ajax给后端去请求数据
                        //所以当请求到的res数组长度为0时,即无数据时,移除滚轮事件,终止ajax请求数据
                        if(res.length){
                            res.forEach(elm=>{
                                $('tbody').append(`
                                    <tr>
                                        <td>${elm.sid}</td>
                                        <td>${elm.title}</td>
                                        <td>${elm.price}</td>
                                        <td>${elm.num}</td>
                                        <td>${elm.pic}</td>
                                        <td>${elm.details}</td>
                                    </tr>
                                `);
                            });
                        }else{
                            $('tbody').append(`<tr><td colspan="6">没有更多的数据了...</td></tr>`);
                            $(window).off('scroll resize');
                        }
                    }
                })
            }
            
        })
    </script>
</head>
<body>
    <div class="container">
        <table class="table table-bordered table-hover text-center">
            <thead>
                <caption class="text-center h3">商品信息表</caption>
                <tr>
                    <td>id</td>
                    <td>title</td>
                    <td>price</td>
                    <td>num</td>
                    <td>pic</td>
                    <td>details</td>
                </tr>
            </thead>
        </table>
    </div>
</body>
</html>

相关文章

  • 页面懒加载数据

    文章来源:(数据懒加载案例)[https://www.freesion.com/article/470510921...

  • 图片懒加载和预加载

    图片懒加载的原理是什么? 首先明白为什么要懒加载: 懒加载即延迟,对于图片过多的页面,为了加快页面加载速度,我们需...

  • vue

    懒加载vue-lazyload 链接 vue表达式 解决vue页面加载返回来的数据渲染到页面,之前的css不起作用...

  • 懒加载

    1.什么是懒加载 只加载当前窗口范围中的图片 在用户滚动页面的时候自动获取更多的数据 2.懒加载的特点 通过滚动获...

  • 懒加载和预加载

    懒加载和预加载 1. 懒加载 1. 什么是懒加载? 懒加载也就是延迟加载 当访问一个页面的时候,先把img元素或是...

  • React拓展2-路由组件的lazyLoad

    lazyLoad懒加载:需要使用的时候再进行加载 当未使用懒加载时,页面一打开,就将所有的路由组件给加载到页面了 ...

  • Paging3简单使用

    paging3有3种使用方式。 从数据库加载页面 从网络加载页面 从网络和数据库加载页面 1.从数据库加载页面 首...

  • vue懒加载

    什么是懒加载? 懒加载:也叫延迟加载,即在需要的时候进行加载,随用随载。 为什么需要懒加载? 像vue这种单页面应...

  • 图片懒加载

    一、概念 “懒加载”就是延迟加载,比如我们加载一个页面,这个页面长到我们的浏览器可视区域装不下,那么懒加载就是优先...

  • 前端性能优化

    1.尽量减少http请求次数 合并js 合并css 小图标使用精灵图 2.延迟加载页面内容 图片、数据 懒加载 功...

网友评论

      本文标题:页面懒加载数据

      本文链接:https://www.haomeiwen.com/subject/zzshkdtx.html