Thinkphp ajax分页
生活随笔
收集整理的這篇文章主要介紹了
Thinkphp ajax分页
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Thinkphp中用ajax分頁(yè)和普通的ajax分頁(yè)的區(qū)別在于處理位置的不同,thinkphp是在控制器的方法中處理ajax傳的值,然后返回?cái)?shù)據(jù)。下面是一個(gè)點(diǎn)擊事件觸發(fā)后,顯示的內(nèi)容用ajax分頁(yè)。
下面的示例是同一個(gè)類(lèi)別下,根據(jù)點(diǎn)擊不同的分類(lèi)顯示出點(diǎn)擊的分類(lèi)的數(shù)據(jù)。
需要修改的地方用黃色背景標(biāo)示。
1.ajax處理頁(yè)面
$(".php_list").click(function(){//點(diǎn)擊事件,可以根據(jù)自己的要求修改。也可以放在$(document).ready(function(e) {})里面自動(dòng)加載。var leibie = "php";//獲取的需要處理的參數(shù)。var fenlei = $(this).html();//獲取的需要處理的參數(shù)。 $("#fy_n").val("1");//傳頁(yè)數(shù),默認(rèn)是第1頁(yè)。$(document).ready(function(e) {JiaZai();//調(diào)用加載方法。var zys = 0;})//頁(yè)面加載數(shù)據(jù)function JiaZai(){ var n = $("#fy_n").val();//頁(yè)數(shù)顯示框里面顯示的頁(yè)數(shù)$.ajax({url:"__CONTROLLER__/pagechuli3",//第一個(gè)處理頁(yè)面data:{fenlei:fenlei,n:n,leibie:leibie},//要傳的參數(shù),n是必須要寫(xiě)的,其它參數(shù)根據(jù)自己的需求寫(xiě)。type:"POST",dataType:"JSON",success: function(data){var str ="";for(var i in data)//for循環(huán)里面是要顯示的一條內(nèi)容,要拼接字符串。 { str =str+ "<div class='panel panel-default index_list_wai'><div class='panel-body'><div class='index_list_left'><div><img src='__PUBLIC__/img/img.jpg' width='40' height='50' /></div><div class='index_list_user_nick'>"+data[i].keyword+"</div></div><div class='index_list_right'><a href='#'><div class='index_list_ziyuan_title'>"+data[i].title+"</div></a><div class='index_list_ziyuan_jianjie'>"+data[i].jianjie+"</div> <div class='index_list_ziyuan_di'><span class='index_list_ziyuan_wenben'>作者:"+data[i].faburen+"</span><span class='index_list_ziyuan_wenben'>分?jǐn)?shù):"+data[i].avg+"</span><span class='index_list_ziyuan_wenben'>點(diǎn)擊量:"+data[i].djnumber+"</span><span class='index_list_ziyuan_wenben'>上傳時(shí)間:"+data[i].time+"</span></div></div></div></div>"; }$("#php_list").html(str);//把拼接好的字符串放到指定的地方 }});//獲取分頁(yè)數(shù)(列表)$.ajax({url:"__CONTROLLER__/pagechuli4",//第2個(gè)處理頁(yè)面data:{fenlei:fenlei,leibie:leibie},//傳的參數(shù)。這里是要查詢fenlei(分類(lèi))和leibie(類(lèi)別)的數(shù)據(jù)的數(shù)量,把這兩個(gè)值傳過(guò)去。type:"POST",dataType:"TEXT",success: function(data){ //總頁(yè)數(shù)//alert(data);var ys = Math.ceil(data/5); //這里的5是每頁(yè)要顯示的條數(shù),注意和處理頁(yè)面的顯示的數(shù)據(jù)量一致。//從這里開(kāi)始,下面的代碼是顯示頁(yè)數(shù)的,一般不需要更改,如果需要改變顯示的頁(yè)數(shù)的樣式,可以修改。zys = ys; var s = "<li><a id='fy_shang'>«</a></li>";var dangqian = $("#fy_n").val(); //當(dāng)前頁(yè)數(shù) for(var i=dangqian-2;i<=dangqian+2;i++){if(i>0 && i<=ys){if(dangqian==i){s+="<li class='active'><a class='fy_zhong'>"+i+"</a></li>";}else{s+="<li><a class='fy_zhong'>"+i+"</a></li>"}}}s += "<li><a id='fy_xia'>»</a></li>";$("#fy_list").html(s);//給分頁(yè)列表加事件 JiaShiJian();}})//給分頁(yè)列表加事件的方法function JiaShiJian(){$("#fy_shang").click(function(){ var n = $("#fy_n").val(); if(n>1){n--;}else{n=1;}$("#fy_n").val(n);//加載數(shù)據(jù) JiaZai();})$("#fy_xia").click(function(){var n = $("#fy_n").val(); if(n<zys){n++;}else{n=zys;}$("#fy_n").val(n);//加載數(shù)據(jù) JiaZai();})$(".fy_zhong").click(function(){var n = $(this).text();$("#fy_n").val(n);//加載數(shù)據(jù) JiaZai();})} }}) </script>2.Thinkphp處理方法,里面是2個(gè)方法。
//點(diǎn)擊類(lèi)別后要顯示的內(nèi)容public function pagechuli3()//這個(gè)方法的功能是根據(jù)ajax傳過(guò)來(lái)的值查詢數(shù)據(jù),再將查詢出來(lái)的數(shù)據(jù)返回到ajax,返回的默認(rèn)是JSON類(lèi)型。 {$u = D("zy_list");//造對(duì)象,表格名為zy_list。$n = $_POST[n];//取到傳過(guò)來(lái)的默認(rèn)的頁(yè)數(shù)的值。$class = $_POST["leibie"];//取傳過(guò)來(lái)的類(lèi)別的值。$fenlei = $_POST["fenlei"];//取傳過(guò)來(lái)的分類(lèi)的值。if($fenlei=="全部資源")//如果分類(lèi)是全部資源 {$lie = $u->where("class='$class'")->page($n,'5')->select();//查詢類(lèi)別為目標(biāo)類(lèi)別的所有數(shù)據(jù),調(diào)用thinkphp中的page方法,每頁(yè)顯示5條,和ajax里面的5要一致。$this->ajaxReturn($lie);//將查詢到的數(shù)據(jù)返回到ajax,注意默認(rèn)返回的是JSON類(lèi)型。 }else//下面的只是在查詢數(shù)據(jù)的時(shí)候又多加了一個(gè)條件。 {$lie = $u->where("class='$class' and fenlei='$fenlei'")->page($n,'5')->select(); $this->ajaxReturn($lie);}}//點(diǎn)擊類(lèi)別后要顯示的頁(yè)數(shù)public function pagechuli4(){$u = D("zy_list");//造對(duì)象$class = $_POST["leibie"];//獲取數(shù)據(jù)$fenlei = $_POST["fenlei"];//獲取數(shù)據(jù)if($fenlei=="全部資源"){$sl = $u->where("class='$class'")->count();//查詢類(lèi)別是目標(biāo)類(lèi)別的所有數(shù)據(jù)的數(shù)量$this->ajaxReturn($sl,"eval");//數(shù)據(jù)的數(shù)量是數(shù)字,返回的數(shù)據(jù)類(lèi)型不能再是JSON了,在里面加上eval表示將返回的數(shù)據(jù)類(lèi)型更改為T(mén)EXT,注意ajax頁(yè)面接收的也必須是TEXT。 }else//下面的查詢數(shù)據(jù)的數(shù)量也只是多增加了一個(gè)條件 {$sl = $u->where("class='$class' and fenlei='$fenlei'")->count(); $this->ajaxReturn($sl,"eval");}}?
轉(zhuǎn)載于:https://www.cnblogs.com/xiaofox0018/p/6363959.html
總結(jié)
以上是生活随笔為你收集整理的Thinkphp ajax分页的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。