zoukankan      html  css  js  c++  java
  • AJAX实现分页

    使用AJSX分页原理:封装两个方法,一个方法负责显示,一个负责写入分页栏。

    首先使用一张数据比较多的数据库中的表格:

    主界面加载后首先导入所有数据,并显示前20条数据,在访问数据库时,使用limit显示前20条:

    html:

    <!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>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<title>无标题文档</title>
    		<script src="jquery-1.11.2.min.js"></script>
    		
    	</head>
    
    	<body>
    
    		<div>
    			<input type="text" id="key" />
    			<input type="button" value="查询" id="chaxun" />
    		</div>
    
    		<table width="100%" border="1" cellpadding="0" cellspacing="0">
    			<tr>
    				<td>代号</td>
    				<td>名称</td>
    				<td>父级代号</td>
    			</tr>
    
    			<tbody id="nr">
    
    			</tbody>
    
    		</table>
    
    		<div id="xinxi">
    
    		</div>
    
    	</body>
    </html>
    

      

    首先把表头显示出来,要导入jq包。

    用AJAX从数据库中用limit20条每页的搜索显示第一页:

    js代码:

    <script type="text/javascript">
    	var page = 1; //当前页
            Load(); //加载数据
            
    
            function Load() {
    	var key = $("#key").val(); //查询条件
    
    	$.ajax({
    		url: "chuli.php",
    		data: {
    			page: page,
    			key: key
    		},
    		type: "POST",
    		dataType: "JSON",
    		success: function(data) {
    			var str = "";
    			for(var k in data) {
    				str += "<tr><td>" + data[k].AreaCode + "</td><td>" + data[k].AreaName + "</td><td>" + data[k].ParentAreaCode + "</td></tr>";
    			}
    			$("#nr").html(str);
    		}
    	});
    }
    

      

    chuli.php文件:

    <?php
    include("DBDA.class.php");
    $db = new DBDA();
    
    $page = $_POST["page"];
    $key = $_POST["key"];
    $num = 20;
    $tiao = ($page-1)*$num;
    
    $sql = "select * from chinastates where areaname like '%{$key}%' limit {$tiao},{$num}";
    
    echo $db->JSONQuery($sql);
    

      

    这里引入了一个php的类文件:

    此类文件用来返回字符串,数据库搜索结果,或者JSON数据:

    DBDA.class.php

    <?php
    class DBDA
    {
    	public $host="localhost";
    	public $uid = "root";
    	public $pwd = "";
    	public $dbname = "12345";
    	
    	//成员方法
    	public function Query($sql,$type=1)
    	{
    		$db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
    		$r = $db->query($sql);
    		
    		if($type==1)
    		{
    			return $r->fetch_all();
    		}
    		else
    		{
    			return $r;
    		}
    	}
    	
    	//返回字符串的方法
    	public function StrQuery($sql,$type=1)
    	{
    		$db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
    		$r = $db->query($sql);
    		
    		if($type==1)
    		{
    			$attr = $r->fetch_all();
    			$str = "";
    			foreach($attr as $v)
    			{
    				$str .= implode("^",$v)."|";
    			}
    			
    			return substr($str,0,strlen($str)-1);
    
    		}
    		else
    		{
    			return $r;
    		}
    	}
    	
    	//返回JSON
    	function JSONQuery($sql,$type=1)
    	{
    		$db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
    		$r = $db->query($sql);
    		
    		if($type==1)
    		{
    		    return json_encode($r->fetch_all(MYSQLI_ASSOC));
    		}
    		else
    		{
    			return $r;
    		}
    	}
    }
    

     

    结果:

     

     加载另外的一个分页栏的方法,实现以下效果:

    function LoadXinXi() {       //加载分页信息
    	var str = "";
    	var minys = 1;
    	var maxys = 1;
    	var key = $("#key").val();
    
    	//查总页数
    	$.ajax({
    		async: false,
    		url: "zys.php",
    		data: {
    			key: key
    		},
    		type: "POST",
    		dataType: "TEXT",
    		success: function(d) {
    			maxys = d;
    		}
    	});
    
    	str += "<span>总共:" + maxys + "页</span>  ";
    	str += "<span id='prev'>上一页</span>";
    
    	for(var i = page - 2; i < page + 3; i++) {
    		if(i >= minys && i <= maxys) {
    			if(i == page) {
    				str += "<span class='dangqian' bs='" + i + "'>" + i + "</span>  ";
    			} else {
    				str += "<span class='list' bs='" + i + "'>" + i + "</span>  ";
    			}
    
    		}
    	}
    
    	str += "<span id='next'>下一页</span>";
    
    	$("#xinxi").html(str);
    
    	//给上一页添加点击事件
    	$("#prev").click(function() {
    			page = page - 1;
    			if(page < 1) {
    				page = 1;
    			}
    			Load(); //加载数据
    			LoadXinXi(); //加载分页信息
    		})
    		//给下一页加点击事件
    	$("#next").click(function() {
    			page = page + 1;
    			if(page > maxys) {
    				page = maxys;
    			}
    			Load(); //加载数据
    			LoadXinXi(); //加载分页信息
    		})
    		//给中间的列表加事件
    	$(".list").click(function() {
    		page = parseInt($(this).attr("bs"));
    		Load(); //加载数据
    		LoadXinXi(); //加载分页信息
    	})
    }
    

      

    php处理文件(zys.php):

    <?php
    include("DBDA.class.php");
    $db = new DBDA();
    
    $key = $_POST["key"];
    $num = 20;
    
    $sql = "select count(*) from chinastates where areaname like '%{$key}%'";
    
    $zts = $db->StrQuery($sql);
    
    echo ceil($zts/$num);
    

      

    主页代码:

    <!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>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<title>无标题文档</title>
    		<script src="jquery-1.11.2.min.js"></script>
    		<style type="text/css">.dangqian {
    	background-color: #69F
    }</style>
    	</head>
    
    	<body>
    
    		<div>
    			<input type="text" id="key" />
    			<input type="button" value="查询" id="chaxun" />
    		</div>
    
    		<table width="100%" border="1" cellpadding="0" cellspacing="0">
    			<tr>
    				<td>代号</td>
    				<td>名称</td>
    				<td>父级代号</td>
    			</tr>
    
    			<tbody id="nr">
    
    			</tbody>
    
    		</table>
    
    		<div id="xinxi">
    
    		</div>
    
    	</body>
    	<script type="text/javascript">var page = 1; //当前页
    
    Load(); //加载数据
    LoadXinXi(); //加载分页信息
    
    //查询
    $("#chaxun").click(function() {
    	page = 1;
    	Load(); //加载数据
    	LoadXinXi(); //加载分页信息
    })
    
    function Load() {
    	var key = $("#key").val(); //查询条件
    
    	$.ajax({
    		url: "chuli.php",
    		data: {
    			page: page,
    			key: key
    		},
    		type: "POST",
    		dataType: "JSON",
    		success: function(data) {
    			var str = "";
    			for(var k in data) {
    				str += "<tr><td>" + data[k].AreaCode + "</td><td>" + data[k].AreaName + "</td><td>" + data[k].ParentAreaCode + "</td></tr>";
    			}
    			$("#nr").html(str);
    		}
    	});
    }
    
    function LoadXinXi() {
    	var str = "";
    	var minys = 1;
    	var maxys = 1;
    	var key = $("#key").val();
    
    	//查总页数
    	$.ajax({
    		async: false,
    		url: "zys.php",
    		data: {
    			key: key
    		},
    		type: "POST",
    		dataType: "TEXT",
    		success: function(d) {
    			maxys = d;
    		}
    	});
    
    	str += "<span>总共:" + maxys + "页</span>  ";
    	str += "<span id='prev'>上一页</span>";
    
    	for(var i = page - 2; i < page + 3; i++) {
    		if(i >= minys && i <= maxys) {
    			if(i == page) {
    				str += "<span class='dangqian' bs='" + i + "'>" + i + "</span>  ";
    			} else {
    				str += "<span class='list' bs='" + i + "'>" + i + "</span>  ";
    			}
    
    		}
    	}
    
    	str += "<span id='next'>下一页</span>";
    
    	$("#xinxi").html(str);
    
    	//给上一页添加点击事件
    	$("#prev").click(function() {
    			page = page - 1;
    			if(page < 1) {
    				page = 1;
    			}
    			Load(); //加载数据
    			LoadXinXi(); //加载分页信息
    		})
    		//给下一页加点击事件
    	$("#next").click(function() {
    			page = page + 1;
    			if(page > maxys) {
    				page = maxys;
    			}
    			Load(); //加载数据
    			LoadXinXi(); //加载分页信息
    		})
    		//给中间的列表加事件
    	$(".list").click(function() {
    		page = parseInt($(this).attr("bs"));
    		Load(); //加载数据
    		LoadXinXi(); //加载分页信息
    	})
    }</script>
    </html>
    

      

    实现分页效果:

  • 相关阅读:
    Titanium环境搭建for mac
    MongoDB学习(二)MongoDB Java增删查改
    Titanium 列表显示TableView
    MongoDB学习(一)安装配置
    MongoDB学习(三)MongoDB shell 命令行的使用
    jsoup解析html
    C#中方法的参数四种类型(值参数、ref、out、params)详解
    ORM JPA 介绍及其使用
    Git Add提示LF would be replaced by CRLF的解决方法
    Spring Data JPA 介绍及使用
  • 原文地址:https://www.cnblogs.com/cyrfr/p/6269456.html
Copyright © 2011-2022 走看看