jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)


Posted in Javascript onJune 07, 2016

本文实例讲述了jQuery+ajax实现滚动到页面底部自动加载图文列表效果。分享给大家供大家参考,具体如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>滚动到页面顶部加载</title>
  <script src="js/jquery-1.11.1.min.js" type="text/javascript"></script>
  <script src="js/endlesspage.js" type="text/javascript"></script>
   <style type="text/css">
      .mainDiv {
        width: 800px;
        border: solid 1px #f00;
        padding: 10px;
      }
      .item {
        width: 600px;
        height: 50px;
        border: solid 1px #00ff90;
        font-size: 12px;
        margin: 10px;
      }
      .title {
        font-size: 16px;
        line-height: 20px;
      }
      .content {
        line-height: 14px;
      }
      .alink
      {
        display:none;
      }
      .loaddiv
      {
        display:none;
      }
   </style>
</head>
<body>
  <h1>滚动测试</h1>
  <div class="mainDiv">
    <!--<div class="item">
      <div class="title">title</div>
      <div class="content">content content content content content content content</div>
    </div>
    -->
  </div>
  <div class="loaddiv">
    <img src="images/loading.gif" />
  </div>
  <div>
    <a href="javascript:void(0);" id="btn_Page" class="alink">查看更多>>></a>
  </div>
</body>
</html>
/*endlesspage.js*/
var gPageSize = 10;
var i = 1; //设置当前页数,全局变量
$(function () {
  //根据页数读取数据
  function getData(pagenumber) {
    i++; //页码自动增加,保证下次调用时为新的一页。
    $.get("/ajax/Handler.ashx", { pagesize: gPageSize, pagenumber: pagenumber }, function (data) {
      if (data.length > 0) {
        var jsonObj = JSON.parse(data);
        insertDiv(jsonObj);
      }
    });
    $.ajax({
      type: "post",
      url: "/ajax/Handler.ashx",
      data: { pagesize: gPageSize, pagenumber: pagenumber },
      dataType: "json",
      success: function (data) {
        $(".loaddiv").hide();
        if (data.length > 0) {
          var jsonObj = JSON.parse(data);
          insertDiv(jsonObj);
        }
      },
      beforeSend: function () {
        $(".loaddiv").show();
      },
      error: function () {
        $(".loaddiv").hide();
      }
    });
  }
  //初始化加载第一页数据
  getData(1);
  //生成数据html,append到div中
  function insertDiv(json) {
    var $mainDiv = $(".mainDiv");
    var html = '';
    for (var i = 0; i < json.length; i++) {
      html += '<div class="item">';
      html += ' <div class="title">' + json[i].rowId + '  ' + json[i].D_Name + '</div>';
      html += ' <div class="content">' + json[i].D_Name + '  ' + json[i].D_Password + '</div>';
      html += '</div>';
    }
    $mainDiv.append(html);
  }
  //==============核心代码=============
  var winH = $(window).height(); //页面可视区域高度
  var scrollHandler = function () {
    var pageH = $(document.body).height();
    var scrollT = $(window).scrollTop(); //滚动条top
    var aa = (pageH - winH - scrollT) / winH;
    if (aa < 0.02) {//0.02是个参数
      if (i % 10 === 0) {//每10页做一次停顿!
        getData(i);
        $(window).unbind('scroll');
        $("#btn_Page").show();
      } else {
        getData(i);
        $("#btn_Page").hide();
      }
    }
  }
  //定义鼠标滚动事件
  $(window).scroll(scrollHandler);
  //==============核心代码=============
  //继续加载按钮事件
  $("#btn_Page").click(function () {
    getData(i);
    $(window).scroll(scrollHandler);
  });
});
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Data;
using MSCL;
using Newtonsoft.Json;
public class Handler : IHttpHandler {
  public void ProcessRequest(HttpContext context)
  {
    //核心处理程序
    string pageSize = context.Request["pagesize"];
    string pageIndex = context.Request["pagenumber"];
    if (string.IsNullOrEmpty(pageSize) || string.IsNullOrEmpty(pageIndex))
    {
      context.Response.Write("");
    }
    else
    {
      //请结合实际自行取分页数据,可调用分页存储过程
      MSCL.PageHelper p = new PageHelper();
      p.CurrentPageIndex = Convert.ToInt32(pageIndex);
      p.FieldsName = "*";
      p.KeyField = "d_id";
      p.SortName = "d_id asc";
      p.TableName = "testtable";
      p.EndCondition = "count(*)";
      p.PageSize = Convert.ToInt32(pageSize);
      DataTable dt = p.QueryPagination();
      string json = JsonConvert.SerializeObject(dt, Formatting.Indented);
      context.Response.Write(json);
    }
  }
  public bool IsReusable {
    get {
      return false;
    }
  }
}
[
 {
  "rowId": 1,
  "D_Id": 1,
  "D_Name": "名称1",
  "D_Password": "密码测试1",
  "D_Else": "其他1"
 },
 {
  "rowId": 2,
  "D_Id": 2,
  "D_Name": "名称2",
  "D_Password": "密码测试2",
  "D_Else": "其他2"
 },
 {
  "rowId": 3,
  "D_Id": 3,
  "D_Name": "名称3",
  "D_Password": "密码测试3",
  "D_Else": "其他3"
 },
 {
  "rowId": 4,
  "D_Id": 4,
  "D_Name": "名称4",
  "D_Password": "密码测试4",
  "D_Else": "其他4"
 },
 {
  "rowId": 5,
  "D_Id": 5,
  "D_Name": "名称5",
  "D_Password": "密码测试5",
  "D_Else": "其他5"
 },
 {
  "rowId": 6,
  "D_Id": 6,
  "D_Name": "名称6",
  "D_Password": "密码测试6",
  "D_Else": "其他6"
 },
 {
  "rowId": 7,
  "D_Id": 7,
  "D_Name": "名称7",
  "D_Password": "密码测试7",
  "D_Else": "其他7"
 },
 {
  "rowId": 8,
  "D_Id": 8,
  "D_Name": "名称8",
  "D_Password": "密码测试8",
  "D_Else": "其他8"
 },
 {
  "rowId": 9,
  "D_Id": 9,
  "D_Name": "名称9",
  "D_Password": "密码测试9",
  "D_Else": "其他9"
 },
 {
  "rowId": 10,
  "D_Id": 10,
  "D_Name": "名称10",
  "D_Password": "密码测试10",
  "D_Else": "其他10"
 }
]
Javascript 相关文章推荐
xmlHTTP实例
Oct 24 Javascript
javascript使用avalon绑定实现checkbox全选
May 06 Javascript
将页面table内容与样式另存成excel文件的方法
Aug 05 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
Aug 31 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
Aug 03 Javascript
JavaScript输出所选择起始与结束日期的方法
Jul 12 Javascript
解决React Native端口号修改的方法
Jul 28 Javascript
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 Javascript
VUE脚手架具体使用方法
May 20 Javascript
JavaScript实现简单的弹窗效果
May 19 Javascript
JS 数组和对象的深拷贝操作示例
Jun 06 Javascript
javascript基础知识
Jun 07 #Javascript
jQuery+Ajax实现限制查询间隔的方法
Jun 07 #Javascript
JavaScript实现九九乘法表的简单实例
Jun 07 #Javascript
javascript如何定义对象数组
Jun 07 #Javascript
jQuery控制div实现随滚动条滚动效果
Jun 07 #Javascript
bootstrap输入框组代码分享
Jun 07 #Javascript
javascript 数组的定义和数组的长度
Jun 07 #Javascript
You might like
Php做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
Python进程通信之匿名管道实例讲解
2015/04/11 Python
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
自荐书模板
2013/12/19 职场文书
高中生操行评语大全
2014/04/25 职场文书
个人委托书范文
2015/01/28 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
Python基础之pandas数据合并
2021/04/27 Python