基于BootStrap与PHP相结合的带有搜索框的ajax无刷新分页案例(支持三种搜索)
来源:互联网 发布:股票收益率数据 编辑:程序博客网 时间:2024/05/22 15:07
废话不多说,直接上代码:
前台代码:
记得先引入bootstrap:http://v3.bootcss.com/dist/css/bootstrap.min.css
index.php
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>基于BootStrap与PHP相结合的带有搜索框的ajax无刷新分页案例(支持三种搜索)</title> <link rel="stylesheet" href="http://v3.bootcss.com/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="style.css" /> <script src="jquery-1.7.2.min.js"></script></head><body> <div class="container"> <h2>基于BootStrap与PHP相结合的带有搜索框的ajax无刷新分页案例(支持三种搜索)</h2> <form class="form-inline" style="text-align: right" onsubmit="return false;"> <div class="form-group"> <div class="input-group"> <div class="input-group-addon">在线搜索</div> <input type="text" class="form-control" id="content" placeholder="请输入搜索内容……"> </div> </div> <button type="button" class="btn btn-primary" id="search">搜索</button> </form> <br /> <input type="hidden" id="currentPage" value="1"> <input type="hidden" id="totalPages" value=""> <input type="hidden" id="search_content" value=""> <table class="table table-bordered table-hover table-striped table-condensed"> <thead> <tr> <td width="25%">ID</td> <td width="25%">名字</td> <td width="25%">性别</td> <td width="25%">语言</td> </tr> <tr id="tip" style="display:none;"> <td colspan="4"></td> </tr> </thead> <tbody> </tbody> </table> </div> <div class="list-div"> </div> <script> $(document).ready(function() { loadingData(); var totalPages = 0; //页面加载数据 }) function loadingData(){ var currentPage = $('#currentPage').val();//当前页码 var totalPages = $('#totalPages').val();//总页码 var search_content = $('#search_content').val();//搜索内容 content = search_content ? search_content : ''; $.ajax({ url: 'test.php', type:'POST', data:{'currentPage':currentPage,'content':content}, dataType: 'json', success:function(data){ var info = data.datas,total = data.total; //调用ajaxSuccess处理函数 ajaxSuccess(total,currentPage,info); } }) //点击按钮搜索 $("#search").click(function(){ search(); }); //边输入边搜索 $("#content").keyup(function(){ search(); }); //回车键搜索(为了避免表单提交,已经禁止上面的表单提交了) $(document).keydown(function() { if (event.keyCode == 13){//表示按的是回车键 search(); } }); //PS:边输入边搜索和回车键搜索最好分开用,以免引起紊乱 } //给分页列表绑定事件的方法 function bindingEvent() { $("#first").click(function(){ if($("#currentPage").val() != 1 && $('#totalPages').val() != 0){//第一页点击时无效 $("#currentPage").val(1);//即第一页 //加载数据 loadingData(); } }) $("#last").click(function(){//最后一页点击时无效 if($("#currentPage").val() != $('#totalPages').val() && $('#totalPages').val() != 0){ var total = $('#totalPages').val();//把总页数存到隐藏框里 $("#currentPage").val(total); //加载数据 loadingData(); } }) $("#down").click(function(){ if($('#totalPages').val() != 0){//总页数为0时,不能点击无效,主要是考虑搜索没数据时的情况 var n = $("#currentPage").val(); if(n>1) { n--; } else { n=1; } $("#currentPage").val(n); } //加载数据 loadingData(); }) $("#up").click(function(){ if($('#totalPages').val() != 0){//总页数为0时,不能点击无效,主要是考虑搜索没数据时的情况 var n = $("#currentPage").val(); if(n<totalPages) { n++; } else { n=totalPages; } $("#currentPage").val(n); //加载数据 loadingData(); } }) $(".center").click(function(){ if($('#totalPages').val() != 0){//总页数为0时,不能点击无效,主要是考虑搜索没数据时的情况 var n = $(this).text(); if($("#currentPage").val() != n){ $("#currentPage").val(n);//中间的页码,点击哪一页就去那一页 //加载数据 loadingData(); } } }) } //把ajax相同部分封装成函数调用 function ajaxSuccess(total,currentPage,info){ var html = '' for(var i = 0;i < info.length;i++){ html += '<tr>'; html += '<td>'+ info[i].id +'</td>'; html += '<td>'+ info[i].name +'</td>'; html += '<td>'+ info[i].sex+'</td>'; html += '<td>'+ info[i].language +'</td>'; html += '</tr>'; } $('tbody').html(html); var pages = Math.ceil(total/3); totalPages = pages; $('#totalPages').val(totalPages);//把总页数存到隐藏框里 var dangqian = currentPage ? parseInt(currentPage) : 1; //当前页数 $('#currentPage').val(dangqian);//把当前页存放到隐藏框 var j = 0; var s = '<nav class="page" aria-label="Page navigation"><ul class="pagination"><li><a id="first">首页</a></li>'; if(dangqian != 1){ s += '<li><a id="down">上一页</a></li>'; } for(var i = dangqian - 2;i <= dangqian + 2;i++) { if(j == 5){//页码列表只显示3列,即只显示1、2、3或2、3、4这样的三列,以此类推。 break; }else{ j++; } if(i>0 && i <= pages) { if(dangqian==i) { s += '<li class="thisclass"><a class="current center">'+ i +'</a></li>'; } else { s += '<li><a class="center">'+ i +'</a></li>'; } } } if(dangqian != totalPages){ s += '<li><a id="up">下一页</a></li>'; } s += '<li><a id="last">末页</a></li>'; s += '<li><span class="pageinfo">共 <strong>'+ totalPages +'</strong>页<strong>'+ total +'</strong>条</span></li></ul></nav>'; $(".list-div").html(s); //给分页列表绑定事件 bindingEvent(); } //搜索封装成函数 function search(){ var content = $('#content').val(); var currentPage = 1;//搜索时默认就是第一页 $('#search_content').val(content);//把搜索内容写到隐藏域 $.ajax({ url:"test.php", data:{currentPage:currentPage,content:content}, type:"POST", dataType:"JSON", success: function(data){ var info = data.datas,total = data.total,html = ''; if(!info){ $('tbody').empty(); $('#tip').show().find('td').html('<center>暂无数据!</center>'); $('#totalPages').val(0);//此时的总页数为0 $(".list-div").html('<nav class="page" aria-label="Page navigation"><ul class="pagination"><li><a id="first">首页</a></li><li class="thisclass"><a class="current center">1</a></li><li><a id="up">下一页</a></li><li><a id="last">末页</a></li><li><span class="pageinfo">共 <strong>1</strong>页<strong>0</strong>条</span></li></ul></nav>'); return false; } $('#tip').hide(); //调用ajaxSuccess处理函数 ajaxSuccess(total,currentPage,info); } }) } </script></body></html>
style.css
.page { text-align: center; margin: 10px 0 -20px 0;}a:hover{ cursor: pointer;}tr td{ text-align: center;}.page .current { background: #FF0403; color: white;}
后台代码:
test.php
<?php header("Content-Type:text/html;charset=utf-8"); error_reporting(0); //连接数据库 mysql_connect('localhost','root',''); mysql_select_db('ajax'); mysql_query('set names utf8'); //查询数据库 $page = $_POST['currentPage'] ? intval($_POST['currentPage']) : 1;//默认是第一页 if(!empty($_POST["content"])){//获取提交的关键字 $content = $_POST["content"]; $params = " name like '%{$content}%' or language like '%{$content}%' or sex like '%{$content}%' or id like '%{$content}%' ";//拼接查询条件 $where = "where {$params}"; }else{ $where = ''; } $perPageNums = 3;//每页显示条数 $offset = ($page - 1) * $perPageNums; $sql1 = "select a.* from ajax_fenye a $where limit $offset,$perPageNums"; $sql2 = "select count(*) count from ajax_fenye $where"; $resource1 = mysql_query($sql1); $resource2 = mysql_query($sql2); $count = mysql_fetch_assoc($resource2); while ($row = mysql_fetch_assoc($resource1)) { $result[] = $row; } echo json_encode(array('datas' => $result,'total' => $count['count']));?>
新建一张数据表:
SQL语句如下
/*
Navicat MySQL Data Transfer
Source Server : localhost_3306
Source Server Version : 50612
Source Host : localhost:3306
Source Database : ajax
Target Server Type : MYSQL
Target Server Version : 50612
File Encoding : 65001
Date: 2017-06-24 15:54:36
*/
SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for ajax_fenye-- ----------------------------DROP TABLE IF EXISTS `ajax_fenye`;CREATE TABLE `ajax_fenye` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', `name` varchar(50) CHARACTER SET utf8 NOT NULL COMMENT '名字', `language` varchar(50) CHARACTER SET utf8 NOT NULL COMMENT '语言', `sex` varchar(5) CHARACTER SET utf8 NOT NULL COMMENT '性别', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;-- ------------------------------ Records of ajax_fenye-- ----------------------------INSERT INTO `ajax_fenye` VALUES ('1', '张三', 'PHP', '男');INSERT INTO `ajax_fenye` VALUES ('2', '李四', 'Java', '男');INSERT INTO `ajax_fenye` VALUES ('3', '王五', 'C++', '男');INSERT INTO `ajax_fenye` VALUES ('4', '马六', 'Swift', '男');INSERT INTO `ajax_fenye` VALUES ('5', '林七', 'Go', '女');INSERT INTO `ajax_fenye` VALUES ('6', '郑八', 'Python', '男');INSERT INTO `ajax_fenye` VALUES ('7', '欧九', 'C', '女');INSERT INTO `ajax_fenye` VALUES ('8', '叶十', 'JavaScript', '男');INSERT INTO `ajax_fenye` VALUES ('9', '金人', 'PHP', '男');INSERT INTO `ajax_fenye` VALUES ('10', '魏伟', 'PHP', '男');INSERT INTO `ajax_fenye` VALUES ('11', '白厚', 'PHP', '男');
效果截图如下:
PS:欢迎大家来加群来探讨:135499297
阅读全文
1 0
- 基于BootStrap与PHP相结合的带有搜索框的ajax无刷新分页案例(支持三种搜索)
- Jquery+ajax+PHP 基于thinkPHP的无刷新分页
- 基于ASP的无刷新ajax分页
- ajax+php写的无刷新分页
- 分页技术原理与实现(三)——无刷新的Ajax分页技术
- 分页技术原理与实现(三)——无刷新的Ajax分页技术
- Ajax的无刷新分页
- 基于TP框架写的ajax无刷新分页
- 基于BootStrap,不支持AJAX只支持表单提交的分页查询与排序组件
- laravel中带有条件搜索的分页
- php+ajax实现无刷新数据分页的办法
- Bootstrap V3.0 Ajax无刷新分页的实现 附代码
- net写的ajax无刷新分页
- 实现FreeMarker+Ajax的无刷新分页
- 最原始的ajax无刷新分页
- thinkphp解决无刷新分页搜索问题
- 基于 BootStrap 的 ajax 分页控件
- 基于jquery的表格无刷新分页
- 网络中的ARP协议
- Linux Command Line and....ch13(更多的结构化命令——循环)
- 清空form表单
- v-show
- Equivalent functions in python as that in R
- 基于BootStrap与PHP相结合的带有搜索框的ajax无刷新分页案例(支持三种搜索)
- 【JVM】GC算法与垃圾收集器
- 排序之直接选择排序
- 去除select边框和三角-----appearance:none
- 反转链表
- 论文阅读(1)-
- UIAlertView中的textField输入文本过长时偏移
- mybatis学习之查询缓存
- 【题解】 状态压缩 CSYZOJ 1040 || codevs 1295 || hdu 2553 N皇后问题