jQuery+Ajax+PHP+Mysql實(shí)現(xiàn)分頁(yè)顯示數(shù)據(jù)實(shí)例講解
本文使用jQuery,結(jié)合PHP和Mysql,通過(guò)實(shí)例講解如何實(shí)現(xiàn)Ajax數(shù)據(jù)加載效果。

HTML
<div id="list"> <ul></ul> </div> <div id="pagecount"></div>
頁(yè)面中,#list用來(lái)展示數(shù)據(jù)列表,包括本例要展示的商品圖片和標(biāo)題,#pagecount用來(lái)展示分頁(yè)條,即本例中的上一頁(yè)、下一頁(yè)。
當(dāng)然,別忘了,在head中預(yù)先載入jquery庫(kù)文件。
CSS
我們需要將商品圖片進(jìn)行排列,以及設(shè)置分頁(yè)條樣式,當(dāng)然這些樣式的設(shè)計(jì)可以根據(jù)讀取成功后的數(shù)據(jù)進(jìn)行設(shè)置,本例中我們先把css代碼貼出來(lái)。
#list{width:680px; height:530px; margin:2px auto; position:relative}
#list ul li{float:left;width:220px; height:260px; margin:2px}
#list ul li img{width:220px; height:220px}
#list ul li p{line-height:22px}
#pagecount{width:500px; margin:10px auto; text-align:center}
#pagecount span{margin:4px; font-size:14px}
#list ul li#loading{width:120px; height:32px; border:1px solid #d3d3d3;
position:absolute; top:35%; left:42%; text-align:center; background:#f7f7f7
url(loading.gif) no-repeat 8px 8px;-moz-box-shadow:1px 1px 2px rgba(0,0,0,.2);
-webkit-box-shadow:1px 1px 2px rgba(0,0,0,.2); box-shadow:1px 1px 2px rgba(0,0,0,.2);}
jQuery
我們先聲明變量,后面的代碼要用到以下變量。
var curPage = 1; //當(dāng)前頁(yè)碼 var total,pageSize,totalPage; //總記錄數(shù),每頁(yè)顯示數(shù),總頁(yè)數(shù)
接下來(lái),我們自定義一個(gè)函數(shù):getData(),用來(lái)獲取當(dāng)前頁(yè)數(shù)據(jù)。函數(shù)中,我們利用$.ajax()向后臺(tái)pages.php發(fā)送POST異步請(qǐng)求,將當(dāng)前頁(yè)碼以JSON格式傳遞給后臺(tái)。
//獲取數(shù)據(jù)
function getData(page){
$.ajax({
type: 'POST',
url: 'pages.php',
data: {'pageNum':page-1},
dataType:'json',
beforeSend:function(){
$("#list ul").append("<li id='loading'>loading...</li>");//顯示加載動(dòng)畫
},
success:function(json){
$("#list ul").empty();//清空數(shù)據(jù)區(qū)
total = json.total; //總記錄數(shù)
pageSize = json.pageSize; //每頁(yè)顯示條數(shù)
curPage = page; //當(dāng)前頁(yè)
totalPage = json.totalPage; //總頁(yè)數(shù)
var li = "";
var list = json.list;
$.each(list,function(index,array){ //遍歷json數(shù)據(jù)列
li += "<li><a href='#'><img src='"+array['pic']+"'>"+array['title']
+"</a></li>";
});
$("#list ul").append(li);
},
complete:function(){ //生成分頁(yè)條
getPageBar();
},
error:function(){
alert("數(shù)據(jù)加載失敗");
}
});
}
請(qǐng)求成功后并返回?cái)?shù)據(jù),將相應(yīng)的數(shù)據(jù)附給變量,并將返回的商品數(shù)據(jù)列表循環(huán)展示到對(duì)應(yīng)容器#list ul中。當(dāng)數(shù)據(jù)完全加載完畢后,調(diào)用分頁(yè)條函數(shù)getPageBar()生成分頁(yè)條。
//獲取分頁(yè)條
function getPageBar(){
//頁(yè)碼大于最大頁(yè)數(shù)
if(curPage>totalPage) curPage=totalPage;
//頁(yè)碼小于1
if(curPage<1) curPage=1;
pageStr = "<span>共"+total+"條</span><span>"+curPage
+"/"+totalPage+"</span>";
//如果是第一頁(yè)
if(curPage==1){
pageStr += "<span>首頁(yè)</span><span>上一頁(yè)</span>";
}else{
pageStr += "<span><a href='javascript:void(0)' rel='1'>首頁(yè)</a></span>
<span><a href='javascript:void(0)' rel='"+(curPage-1)+"'>上一頁(yè)</a></span>";
}
//如果是最后頁(yè)
if(curPage>=totalPage){
pageStr += "<span>下一頁(yè)</span><span>尾頁(yè)</span>";
}else{
pageStr += "<span><a href='javascript:void(0)' rel='"+(parseInt(curPage)+1)+"'>
下一頁(yè)</a></span><span><a href='javascript:void(0)' rel='"+totalPage+"'>尾頁(yè)</a>
</span>";
}
$("#pagecount").html(pageStr);
}
最后,當(dāng)頁(yè)面第一次加載時(shí),我們加載第一頁(yè)數(shù)據(jù)即getData(1),當(dāng)點(diǎn)擊分頁(yè)條中的分頁(yè)鏈接時(shí),調(diào)用getData(page)加載對(duì)應(yīng)頁(yè)碼的數(shù)據(jù)。我們通過(guò)getPageBar()函數(shù)已預(yù)先在翻頁(yè)連接的屬性rel中在埋入了數(shù)字頁(yè)碼。
$(function(){
getData(1);
$("#pagecount span a").live('click',function(){
var rel = $(this).attr("rel");
if(rel){
getData(rel);
}
});
});
PHP
pages.php接收每次前端頁(yè)面的ajax請(qǐng)求,根據(jù)提交的頁(yè)碼pageNum值,從mysql數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),計(jì)算總記錄數(shù)和總頁(yè)數(shù),讀取對(duì)應(yīng)頁(yè)碼下的數(shù)據(jù)列表,并將最終結(jié)果以JSON格式返回給前端頁(yè)面。
include_once('connect.php'); //連接數(shù)據(jù)庫(kù),略過(guò),具體請(qǐng)下載源碼查看
$page = intval($_POST['pageNum']); //當(dāng)前頁(yè)
$result = mysql_query("select id from food");
$total = mysql_num_rows($result);//總記錄數(shù)
$pageSize = 6; //每頁(yè)顯示數(shù)
$totalPage = ceil($total/$pageSize); //總頁(yè)數(shù)
$startPage = $page*$pageSize; //開(kāi)始記錄
//構(gòu)造數(shù)組
$arr['total'] = $total;
$arr['pageSize'] = $pageSize;
$arr['totalPage'] = $totalPage;
$query = mysql_query("select id,title,pic from food order by id asc limit
$startPage,$pageSize"); //查詢分頁(yè)數(shù)據(jù)
while($row=mysql_fetch_array($query)){
$arr['list'][] = array(
'id' => $row['id'],
'title' => $row['title'],
'pic' => $row['pic'],
);
}
echo json_encode($arr); //輸出JSON數(shù)據(jù)
這時(shí)再回到前端頁(yè)面,即看到數(shù)據(jù)已分號(hào)頁(yè),點(diǎn)擊“下一頁(yè)”看看是不是你要的效果,查看DEMO,分頁(yè)條的樣式大家可以自己定制,我給的是最基本的樣式。
最后,附上Mysql表結(jié)構(gòu),下載源碼包中帶數(shù)據(jù)表哦,^-^都為您準(zhǔn)備好了。
CREATE TABLE IF NOT EXISTS `food` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `pic` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
以上就是關(guān)于jQuery+Ajax+PHP+Mysql實(shí)現(xiàn)分頁(yè)顯示數(shù)據(jù)實(shí)例講解,Ajax分頁(yè)效果讓您的網(wǎng)站數(shù)據(jù)加載顯得非常流暢,希望這篇文章對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
jQuery學(xué)習(xí)筆記 操作jQuery對(duì)象 屬性處理
HTML文檔,不但有一系列語(yǔ)義標(biāo)簽,每個(gè)標(biāo)簽下屬還有一系列屬性節(jié)點(diǎn)。自然我們也想去操作這些屬性節(jié)點(diǎn)。格式仍然為$(selector).方法2012-09-09
jQuery插件FusionCharts繪制2D雙折線圖效果示例【附demo源碼】
這篇文章主要介紹了jQuery插件FusionCharts繪制2D雙折線圖效果,結(jié)合實(shí)例形式分析了jQuery使用FusionCharts結(jié)合x(chóng)ml數(shù)據(jù)載入實(shí)現(xiàn)2D雙折線圖繪制的相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-04-04
jQuery基于排序功能實(shí)現(xiàn)上移、下移的方法
這篇文章主要介紹了jQuery基于排序功能實(shí)現(xiàn)上移、下移的方法,結(jié)合實(shí)例形式分析了jQuery使用ajax與后臺(tái)php交互實(shí)現(xiàn)元素的排序,上移、下移功能相關(guān)操作技巧2016-11-11
jQuery實(shí)現(xiàn)的超簡(jiǎn)單點(diǎn)贊效果實(shí)例分析
這篇文章主要介紹了jQuery實(shí)現(xiàn)的超簡(jiǎn)單點(diǎn)贊效果,結(jié)合實(shí)例形式分析了jQuery實(shí)現(xiàn)點(diǎn)贊功能的具體步驟與相關(guān)技巧,需要的朋友可以參考下2015-12-12
老生常談jquery中detach()和remove()的區(qū)別
下面小編就為大家?guī)?lái)一篇老生常談jquery中detach()和remove()的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
基于jQuery實(shí)現(xiàn)數(shù)字滾動(dòng)效果
本文主要分享了基于jQuery實(shí)現(xiàn)數(shù)字滾動(dòng)效果的示例代碼,附源碼下載。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01
Jquery ajax執(zhí)行順序 返回自定義錯(cuò)誤信息(實(shí)例講解)
由于Jquery中的Ajax的async默認(rèn)是true(異步請(qǐng)求),如果想一個(gè)Ajax執(zhí)行完后再執(zhí)行另一個(gè)Ajax, 需要把a(bǔ)sync=false就可以了2013-11-11

