素材牛VIP会员

jQuery+Ajax+PHP+MySql无刷新分页实例教程

 所属分类:PHP实例-Ajax,分页

 浏览:28800次  评论:29次  更新时间:2020-08-21
牛币素材VIP可免积分下载
jQuery+Ajax+PHP+MySql无刷新分页实例教程
积分说明:注册即送10牛币,每日签到可获得5牛币,成为VIP会员可永久免牛币下载!   充值积分   充值会员   更多说明»
素材描述:分页我相信大家存储过程分页已经很熟悉了,ajax更是耳熟能详了,更别说我们的json等等。 如果您没用过这些东东的话,我相信看完这篇文章会对您有帮助的。

基础属性

  • 难易中级
  • 语言PHP
  • 数据库

详细介绍

本文使用jQuery+Ajax+PHP+Mysql,通过实例讲解如何实现Ajax无刷新分页效果。

<div class="lists"> 
    <ul id="ul_lists" class="clearfix"> 
    </ul> 
</div>

#ul_lists以列表的形式展现数据,信息包括商品图片和标题

CSS

.lists{width:740px;  margin:30px auto 0; position:relative} 
#ul_lists li{float:left;width:220px;height:240px;margin:0 6px 6px;border:1px solid #ddd;padding:5px;overflow:hidden} 
#ul_lists li img{width:220px; height:220px;margin:0 0 6px} 
.page{ margin:12px 0 20px;  text-align:center} 
.page span{margin:5px; font-size:14px}

jQuery

首先声明全局变量,后面分页用到。

var page_cur = 1; //当前页 
var total_num, page_size, page_total_num;//总记录数,每页条数,总页数

接着通过函数getData() 获取当前页数据。我们利用$.ajax GET方式把参数page以json格式传到ajax.php。

function getData(page) { //获取当前页数据 
    $.ajax({ 
        type: 'GET', 
        url: 'ajax.php', 
        data: { 
            'page': page - 1 
        }, 
        dataType: 'json', 
        success: function(json) { 
            $("#ul_lists").empty(); 
            total_num = json.total_num; //总记录数 
            page_size = json.page_size; //每页数量 
            page_cur = page; //当前页 
            page_total_num = json.page_total_num; //总页数 
            var li = ""; 
            var list = json.list; 
            $.each(list, 
            function(index, array) { //遍历返回json 
                li += "<li><a href='#'><img src='" + array['pic'] + "'>" + array['title'] + "</a></li>"; 
            }); 
            $("#ul_lists").append(li); 
        }, 
        complete: function() { 
            getPageBar(); //js生成分页,可用程序代替 
        }, 
        error: function() { 
            alert("数据异常,请检查是否json格式"); 
        } 
    }); 
}

每次请求返回的商品放置在#ul_lists中。当数据完全加载完毕后,调用函数getPageBar()生成分页,也可用程序来实现分页。

function getPageBar() { //js生成分页 
    if (page_cur > page_total_num) page_cur = page_total_num; //当前页大于最大页数 
    if (page_cur < 1) page_cur = 1; //当前页小于1 
    page_str = "<span>共" + total_num + "条</span><span>" + page_cur + "/" + page_total_num + "</span>"; 
    if (page_cur == 1) { //若是第一页 
        page_str += "<span>首页</span><span>上一页</span>"; 
    } else { 
        page_str += "<span><a href='javascript:void(0)' data-page='1'>首页</a></span><span><a href='javascript:void(0)' data-page='" + (page_cur - 1) + "'>上一页</a></span>"; 
    } 
    if (page_cur >= page_total_num) { //若是最后页 
        page_str += "<span>下一页</span><span>尾页</span>"; 
    } else { 
        page_str += "<span><a href='javascript:void(0)' data-page='" + (parseInt(page_cur) + 1) + "'>下一页</a></span><span><a href='javascript:void(0)' data-page='" + page_total_num + "'>尾页</a></span>"; 
    } 
    $("#page").html(page_str); 
}

最后,当页面第一次加载时,我们加载第一页数据即getData(1),当点击分页条中的分页链接时,通过getData(page)加载对应页码的数据。页面page可在分页的属性data-page中获取。

$("#page a").live('click',function() { //live 向未来的元素添加事件处理器,不可用bind 
    var page = $(this).attr("data-page"); //获取当前页 
    getData(page) 
});

PHP

ajax.php接收每次前端页面的ajax请求,根据提交的页码page,计算总记录数和总页数,读取对应页码下的数据列表,并将结果以JSON格式返回给前端页面。

include_once('connect.php'); 
 
$page = intval($_GET['page']); //当前页 
$total_num = mysql_num_rows(mysql_query("select id from goods")); //总记录数 
 
$page_size = 6; //每页数量 
$page_total = ceil($total_num / $page_size); //总页数 
$page_start = $page * $page_size; 
 
$arr = array("total_num" = >$total_num, "page_size" = >$page_size, "page_total_num" = >$page_total, ); 
$query = mysql_query("SELECT id,title,pic FROM goods ORDER BY ID ASC LIMIT $page_start,$page_size"); 
while ($row = mysql_fetch_array($query)) { 
    $arr['list'][] = array('id' = >$row['id'], 'title' = >$row['title'], 'pic' = >$row['pic'], ); 
} 
 
echo json_encode($arr);

最后附上goods表结构,下载压缩包里也有哦~。

CREATE TABLE IF NOT EXISTS `goods` (  
  `id` int(8) NOT NULL AUTO_INCREMENT,  
  `title` varchar(80) NOT NULL,  
  `pic` varchar(255) NOT NULL,  
  PRIMARY KEY (`id`)  
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

相关素材 - Ajax,分页

讨论这个素材(29)回答他人问题或分享使用心得会奖励牛币

97***84  
2020年03月08日

功能很好 我也正需要

回复
诸***1  
2020年04月03日

这个必须 有,哈哈,加油

回复
de***22  
2020年04月12日

这个也是一个好东西

回复
迷***文  
2020年04月22日

感觉很给力,就是演示看不了

回复
sh***ng  
2020年04月23日

感谢素材牛,学到好多东西

回复
风***巴  
2020年04月26日

效果还是可以的!

回复
yu***01  
2020年05月03日

很给力,需要

回复
許***愿  
2020年05月04日

样子看的挺炫的,不知道用起来怎么样

回复
yi***14  
2020年05月14日

学习,正好用到

回复
马***1  
2020年05月18日

还可以,就是样式不好看,其他的还好

回复
Co***ht  
2020年05月21日

样子看的挺炫的,不知道用起来怎么样

回复
h***o  
2020年05月22日

无刷新分页,很好啊!

回复
13***64  
2020年05月25日

这个东西能用

回复
素材牛  SVIP
2020年05月26日

原理简单,很实用

回复
逆***团  
2020年05月31日

正好用的上谢谢你的分享

回复
轻***却  
2020年06月03日

刚好用到,很赞的插件

回复
ba***pc  
2020年06月11日

这个效果以前在哪个网站看到过

回复
小***6  
2020年06月18日

我要筛选的功能啊

回复
Co***ht  
2020年06月22日

这个很不错,值得以后好好研究学习一下的啊,哈哈。

回复
li***zi  
2020年06月25日

很好的一个学习方法,受益了

回复
牛***满  
2020年07月09日

的分页效果

回复
间***p  
2020年07月12日

回头试试看!

回复
麦***气  
2020年07月25日

很好很好真心可以用这个做很多东西

回复
13***62  
2020年07月26日

这个网站太他妈牛逼了

回复
mo***id  
2020年07月28日

资源不错 jQuery还不太会用

回复
醉***o  
2020年08月05日

可以了,运行了呵呵

回复
qq***19  
2020年10月02日

JQuery 实用

回复
qq***22  
2021年10月07日

厉害

回复
qq***10  
2023年04月16日

是一个好东西

回复
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取
我的牛币余额:0
所需牛币:100 开始下载

牛币获取:签到、评论、充值    » 在线充值(10牛币=1元)