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 相关文章推荐
javascript[js]获取url参数的代码
Oct 17 Javascript
jValidate 基于jQuery的表单验证插件
Dec 12 Javascript
Javascript算符的优先级介绍
Mar 20 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
JavaScript:Date类型全面解析
May 19 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
Feb 22 Javascript
vue如何实现observer和watcher源码解析
Mar 09 Javascript
jquery 校验中国身份证号码实例详解
Apr 11 jQuery
响应式框架Bootstrap栅格系统的实例
Dec 19 Javascript
jQuery UI实现动画效果代码分享
Aug 19 jQuery
详解koa2学习中使用 async 、await、promise解决异步的问题
Nov 13 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
Dec 05 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文件上传(实例)
2013/10/27 PHP
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
php简单统计中文个数的方法
2016/09/30 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
如何实现浏览器上的右键菜单
2006/07/10 Javascript
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
Three.js基础学习教程
2017/11/16 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
python实现自动发送报警监控邮件
2018/06/21 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
写好自荐信要注意的问题
2013/11/10 职场文书
初三家长会邀请函
2014/01/18 职场文书
医学生个人求职信范文
2014/02/07 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
教师节慰问信
2015/02/15 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
微观世界观后感
2015/06/10 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js