学习笔记之AJAX无刷新分页
利用AJAX实现无刷新分页技术原理:
其主要是利用AJAX的异步处理机制,实现数据的异步传递,它隐藏了客户端向服务端请求数据的状态,在客户端表现为无刷新的显示状态。
实现分页的步骤:
1.客服端点击页码按钮触发分页事件
2.客户端传递页码参数到服务端
3.服务端连接数据库获取数据
4.服务端将数据序列化并写入输出流
5.客户端获取输出流,并转换为JSON格式数据
6.将JSON数据组合排列到标签元素生成具体页面。
具体实例:
ASPX页面代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="jquery-1.4.1.js"></script>
<script type="text/javascript">
var pageCount = 0;
var pageIndex = 1;
$(function () {
//getdata
$.post("Pager.ashx", { "data": "getdata", "count": "1" }, function (data, status) {
var dd = $.parseJSON(data);
$(".con li").remove();
for (var i = 0; i < dd.length; i++) {
var li = $("<li>" + dd[i].datetime + ":" + dd[i].Msg + "</li>");
$(".con").append(li);
}
});
//getdatacount
$.post("Pager.ashx", { "data": "getcount" }, function (data, status) {
//alert(data);
pageCount = data;
$(".b").text(data);
});
//尾页
$(".pp li:eq(0) a").click(function (e) {
e.preventDefault();
$.post("Pager.ashx", { "data": "getdata", "pagecount": pageCount }, function (data, status) {
var dd = $.parseJSON(data);
$(".con li").remove();
for (var i = 0; i < dd.length; i++) {
var li = $("<li>" + dd[i].datetime + ":" + dd[i].Msg + "</li>");
$(".con").append(li);
}
});
});
//下页
$(".pp li:eq(1) a").click(function (e) {
e.preventDefault();
if (pageIndex < pageCount) {
pageIndex++;
$.post("Pager.ashx", { "data": "getdata", "pagecount": pageIndex }, function (data, status) {
var dd = $.parseJSON(data);
$(".con li").remove();
for (var i = 0; i < dd.length; i++) {
var li = $("<li>" + dd[i].datetime + ":" + dd[i].Msg + "</li>");
$(".con").append(li);
}
});
}
});
//上一页
$(".pp li:eq(2) a").click(function (e) {
e.preventDefault();
if (pageIndex > 1) {
pageIndex--;
$.post("Pager.ashx", { "data": "getdata", "pagecount": pageIndex }, function (data, status) {
var dd = $.parseJSON(data);
$(".con li").remove();
for (var i = 0; i < dd.length; i++) {
var li = $("<li>" + dd[i].datetime + ":" + dd[i].Msg + "</li>");
$(".con").append(li);
}
});
}
});
//首页
$(".pp li:eq(3) a").click(function (e) {
e.preventDefault();
pageIndex = 1;
$.post("Pager.ashx", { "data": "getdata", "pagecount": pageIndex }, function (data, status) {
var dd = $.parseJSON(data);
$(".con li").remove();
for (var i = 0; i < dd.length; i++) {
var li = $("<li>" + dd[i].datetime + ":" + dd[i].Msg + "</li>");
$(".con").append(li);
}
});
});
})
</script>
<style type="text/css">
li{ float:right; margin:0 2px 0; list-style:none;}
.page{float:right; margin-right:1em;}
.content{ clear:both;}
.con li{ float:none; list-style:none; background-color:Gray;}
a{ cursor:pointer;}
.con
{
width: 400px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div class="content" style=" width:600px; height:400px; border:1px solid red;">
<ul class="con"></ul>
</div>
<div>
<ul class="pp">
<li><a>尾页</a></li>
<li><a>下一页</a></li>
<li><a>上一页</a></li>
<li><a>首页</a></li>
<li><div class="page">共有数据:<span class="b"></span></div></li>
</ul>
</div>
</form>
</body>
</html>
后台处理程序ashx
<%@ WebHandler Language="C#" class="Pager" %>
using System;
using System.Web;
using System.Collections.Generic;
using System.Web.Script.Serialization;
using System.Data;
using System.Data.SqlClient;
using System.Text;
public class Pager : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string paras = context.Request.Params["data"].ToString();
//string pagecount = ;
if (paras == "getcount")
{
fenyeSlect ff = new fenyeSlect();
DataTable dt = ff.selectCount().Tables[0];
int count = Convert.ToInt32(dt.Rows[0][0].ToString());
int pageCount = count / 10;
if (count % 10 != 0)
{
pageCount++;
}
context.Response.Write(pageCount);
}
else if (paras == "getdata")
{
string pagenum = context.Request.Params["count"].ToString();
int ipagenum = Convert.ToInt32(pagenum);
fenyeSlect ff = new fenyeSlect();
DataSet ds = ff.GetPageData((ipagenum - 1) * 10 + 1, (ipagenum) * 10);
DataTable dt = ds.Tables[0];
List<News> list = new List<News>();
// string[] list00=new string[dt.Rows.Count];
for (int row = 0; row < dt.Rows.Count; row++)
{
// list00[row] = dt.Rows[row][1].ToString();
list.Add(new News { datetime = dt.Rows[row][1].ToString(), Msg = dt.Rows[row][2].ToString(), ID = dt.Rows[row][0].ToString() });
}
JavaScriptSerializer jss = new JavaScriptSerializer();
string data = jss.Serialize(list);
context.Response.Write(data);
}
//context.Response.Write("Hello World");
}
public bool IsReusable {
get {
return false;
}
}
public class fenyeSlect
{
public SqlConnection getconn()
{
string con = "server=.;uid=sa;pwd=nexel;database=wsxfy;";
SqlConnection conn = new SqlConnection(con);
return conn;
}
/// <summary>
/// 获得条数,有多少条数据
/// </summary>
/// <returns></returns>
public DataSet selectCount()
{
string selectCount = "SELECT COUNT(*) FROM T_Comment";
DataSet ds = new DataSet();
SqlConnection conn = getconn();
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(selectCount, conn);
da.Fill(ds);
return ds;
}
public DataSet GetPageData(int StartRowIndex, int EndRowIndex)
{
// string fenye = "select * from (select ID,Title,Person,[Time],Row_Number() over(order by ID desc) rownum from tb_IndustryNews)t where t.rownum>="+StartRowIndex+" and t.rownum<="+EndRowIndex+"";
StringBuilder sql = new StringBuilder();
sql.Append("select * from ( ");
sql.Append("select ID,PostDate,Msg,Row_Number() over(order by ID desc) Rownum from T_Comment ");
sql.Append(")t ");
sql.Append("where t.Rownum>='" + StartRowIndex + "' and t.Rownum<='" + EndRowIndex + "'");
DataSet ds = new DataSet();
SqlConnection conn = getconn();
conn.Close();
SqlDataAdapter da = new SqlDataAdapter(sql.ToString(), conn);
da.Fill(ds);
return ds;
}
}
public class News
{
public string datetime { get; set; }
public string Msg { get; set; }
public string ID { get; set; }
}
}
学习笔记之AJAX无刷新分页的更多相关文章
- ajax 无刷新分页
//ajax 无刷新分页1.前台要做的 滑动时 当前page+1,通过page ajax请求后台接口获取数据将数据进行拼装;2.后台要做的 做分页接口返回json数据前台判断触发请求条件: var p ...
- thinkphp ajax 无刷新分页效果的实现
思路:先做出传统分页效果,然后重新复制一份Page.class.php类,对它进行修改,把js中的函数传到page类中,把上一页.下一页.首页.尾页.链接页中的url地址改成js控制的函数,模板页面中 ...
- 关于Ajax无刷新分页技术的一些研究 c#
关于Ajax无刷新分页技术的一些研究 c# 小弟新手,求大神有更好的解决方案,指教下~ 以前做项目,用过GridView的刷新分页,也用过EasyUI的封装好的分页技术,最近在老项目的基础上加新功能, ...
- thinkphp下实现ajax无刷新分页
1.前言 作为一名php程序员,我们开发网站主要就是为了客户从客户端进行体验,在这里,thinkphp框架自带的分页类是每次翻页都要刷新一下整个页面,这种翻页的用户体验显然是不太理想的,我们希望每次翻 ...
- ThinkPhp 3.2 ajax无刷新分页(未完全改完,临时凑合着用)
临时更改后的page类(很多地方没修改...因为笔者PHP没学好..)如下: <?phpnamespace Fenye\libs; /** file: page.class.php 完美分 ...
- Ajax无刷新分页
前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxPage ...
- jquery+jquery.pagination+php+ajax 无刷新分页
<!DOCTYPE html> <html ><head><meta http-equiv="Content-Type" content= ...
- SUI分页组件和avalon搞定ajax无刷新分页
<div ms-controller="main"> <h2 class="pagination-centered">{{ title ...
- php+ajax无刷新分页原生ajax实现分页最简单完整实例-完整代码,
展示页面:index.html <html><script> function ajax_show() { // 获取当前页 var page =1; var xhr = ne ...
随机推荐
- LINUX BASH SHELL,小小学习一下
注意点要注意的: 整数运算一般通过 let 和 expr 这两个指令来实现,如对变量 x 加 1 可以写作:let "x = $x + 1" 或者 x=`expr $x + 1` ...
- C#程序设计基础——变量
变量表示数值,字符串值或类的对象.变量存储的值可能会发生更改,但名称保持不变.C#是一种强类型语言,在变量中存储值之前,必须指定变量的类型. 变量的命名规则: 1-变量只能有字母,数字和下划线三种字符 ...
- perl 正则前导字符
uat-prx02:/root# cat a1.pl my $str="123"; if ($str =~/(abc)*/){print "111111111\n&quo ...
- OJ技巧
防爆盾: #pragma comment(linker,"/QUEUE:10240000,10240000") #pragma comment(linker,"/STAC ...
- sql server 主从数据库同步 利用发布 订阅是实现
发布订阅功能自SQL 2005之后就有了 配置方法可参考:http://blog.csdn.net/wanmdb/article/details/7515277 遇到问题: 1. 如果代理无法启动 , ...
- Java做acm所需要的基础知识之排序问题
Java做acm所需要的基础知识. 以前做acm的题都是用C/C++来写代码的,在学习完Java之后突然感觉Java中的方法比C/C++丰富很多,所以就整理一下平时做题需要用到的Java基础知识. 1 ...
- POJ3273:Monthly Expense(二分)
Description Farmer John is an astounding accounting wizard and has realized he might run out of mone ...
- vSphere文档中心
http://pubs.vmware.com/vsphere-51/index.jsp#com.vmware.vsphere.install.doc/GUID-7C9A1E23-7FCD-4295-9 ...
- 苹果iOS操作系统整体架构层次讲解
iOS的系统架构分为四个层次:核心操作系统层(Core OS layer).核心服务层(Core Services layer).媒体层(Media layer)和可触摸层(Cocoa Touch ...
- Tomcat: IllegalStateException: No output folder --reference
Today, I started to create a couple of JSP pages for the server-side part of my MSc thesis project i ...