Ajax动态滚动加载实例

index.php

<?
//数据库配置文件
include("conn.php");
//默认搜索
$page = $_GET["page"] ? $_GET["page"] : 1;
$pagesize = 20;
$pageval = ($page-1)*20;

$sql="select `pic` from `mypic` limit $pageval,$pagesize";
$query = mysql_query($sql);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://files.cnblogs.com/tinyphp/jquery-1.3.2.min.js"></script>
<link rel="stylesheet" href="page.css">
<title>延迟加载</title>
</head>
<style type="text/css">
    .showbox{ width:1000px; margin:0 auto;}
    .showbox img{ padding:5px; background:#CCCCFF;}
    .add-more{ width: 1000px; background: yellow;height: 100px; line-height: 30px; text-align: center; margin: 0 auto; display: none;}
</style>
<body>
<div class="showbox">
<?
    while($row=mysql_fetch_array($query)){
?>
<img src="<?=$row["pic"];?>" alt="" width="200" height="200">
<?
    }
?>
</div>
<!--数据加载提示,默认隐藏-->
<div class="add-more">数据正在加载...</div>
<!--js部分-->
<script type="text/javascript">

    $(function(){
        var downrange    = 100;                //下边界-参考正在加载提示层/px
        var num = <?=$page;?>;                //初始页码
        var maxnum = num+5;                    //设置加载次数
        var $main = $(".showbox");            //主体
        var $loaddiv = $(".add-more")        //加载提示层
        var totalheight = 0;            
        //判断是否需要异步
        function ifLoad(){
            //滚动条距离顶部距离
            var scrolltotop=parseFloat($(window).scrollTop());
            //窗口高度
            var winheight = parseFloat($(window).height());
            //内容总高度
            var conheight = parseFloat($(document).height())-downrange; 
            //总高度
            totalheight = scrolltotop + winheight;

            //判断是否加载,当操作高度比内容大,空间充裕->加载
            if(totalheight >= conheight && num!=maxnum){
                ajaxLoad(num);
                num++;
            }

        }

        //ajax-fun
        function ajaxLoad(page){
            $.ajax({
                url:"ajax.php",
                type:"post",
                data:{page:page,maxnum:maxnum},
                success:function(result){
                        //追加数据
                        $main.append(result);
                }
            })
        }

        //加载中隐藏显示
        $loaddiv.ajaxStart(function(){
             $(this).show();
            }).ajaxStop(function(){
                $(this).hide();
            })

        //scroll-fun
        $(window).scroll(ifLoad);

    })
</script>

</body>
</html>

异步文件:

<?
//数据库配置文件
include("conn.php");

//每页显示信息
$pagesize=20;

//最大加载次数
$maxnum = $_POST["maxnum"]-1;

//从哪里开始
$page=$_POST["page"];
$nextpagestart = $page*$pagesize;

$sql = "select `pic` from `mypic` limit $nextpagestart,$pagesize";
$query =mysql_query($sql);
while($row = mysql_fetch_array($query)){
    //内容
?>
<img src="<?=$row["pic"];?>" alt="" width="200" height="200">
<?
}

//分页
if($page ==$maxnum){
    include('page.class.php');
    $sqlsum = "select `id` from `mypic`";
    $querysum = mysql_query($sqlsum);

    //数据总数
    $total = mysql_num_rows($querysum);
    //参数对应位置:总记录,每页显示的条数,当前页,连接的地址
    $my_page=new PageClass($total,$pagesize,$page,'?page={page}');
    //输出页码
    echo $my_page->myde_write();
    exit;
}
?>

猜你喜欢

转载自blog.csdn.net/jjiale/article/details/45887893
今日推荐