thinkphp中用ajax分页和普通的ajax分页的区别在于处理位置的不同,thinkphp是在控制器的方法中处理ajax传的值,然后返回数据。下面是一个点击事件触发后,显示的内容用ajax分页。

下面的示例是同一个类别下,根据点击不同的分类显示出点击的分类的数据。

需要修改的地方用黄色背景标示。

1.ajax处理页面

$(".php_list").click(function(){//点击事件,可以根据自己的要求修改。也可以放在$(document).ready(function(e) {})里面自动加载。
var leibie = "php";//获取的需要处理的参数。
var fenlei = $(this).html();//获取的需要处理的参数。 $("#fy_n").val("1");//传页数,默认是第1页。
$(document).ready(function(e) {
JiaZai();//调用加载方法。
var zys = 0;
})
        //页面加载数据
function JiaZai()
{
var n = $("#fy_n").val();//页数显示框里面显示的页数
$.ajax({
url:"__CONTROLLER__/pagechuli3",//第一个处理页面
data:{fenlei:fenlei,n:n,leibie:leibie},//要传的参数,n是必须要写的,其它参数根据自己的需求写。
type:"POST",
dataType:"JSON",
success: function(data){
var str ="";
for(var i in data)//for循环里面是要显示的一条内容,要拼接字符串。
{
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'>分数:"+data[i].avg+"</span><span class='index_list_ziyuan_wenben'>点击量:"+data[i].djnumber+"</span><span class='index_list_ziyuan_wenben'>上传时间:"+data[i].time+"</span></div></div></div></div>";
}
$("#php_list").html(str);//把拼接好的字符串放到指定的地方
}
}); //获取分页数(列表)
$.ajax({
url:"__CONTROLLER__/pagechuli4",//第2个处理页面
data:{fenlei:fenlei,leibie:leibie},//传的参数。这里是要查询fenlei(分类)和leibie(类别)的数据的数量,把这两个值传过去。
type:"POST",
dataType:"TEXT",
success: function(data){
//总页数
//alert(data);
var ys = Math.ceil(data/5); //这里的5是每页要显示的条数,注意和处理页面的显示的数据量一致。
            //从这里开始,下面的代码是显示页数的,一般不需要更改,如果需要改变显示的页数的样式,可以修改。
zys = ys;
var s = "<li><a id='fy_shang'>&laquo;</a></li>";
var dangqian = $("#fy_n").val(); //当前页数
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'>&raquo;</a></li>";
$("#fy_list").html(s); //给分页列表加事件
JiaShiJian();
}
})
  //给分页列表加事件的方法
  function JiaShiJian()
  {
    $("#fy_shang").click(function(){
    var n = $("#fy_n").val();
    if(n>1)
    {
      n--;
    }
    else
    {
      n=1;
    }
      $("#fy_n").val(n);     //加载数据
    JiaZai();
    })
    $("#fy_xia").click(function(){
    var n = $("#fy_n").val();
    if(n<zys)
    {
      n++;
    }
    else
    {
      n=zys;
    }
    $("#fy_n").val(n);     //加载数据
    JiaZai();
    })
      $(".fy_zhong").click(function(){
      var n = $(this).text();
      $("#fy_n").val(n);     //加载数据
    JiaZai();     })
  } }
})
</script>

2.thinkphp处理方法,里面是2个方法。

  //点击类别后要显示的内容
public function pagechuli3()//这个方法的功能是根据ajax传过来的值查询数据,再将查询出来的数据返回到ajax,返回的默认是JSON类型。
{
$u = D("zy_list");//造对象,表格名为zy_list。
$n = $_POST[n];//取到传过来的默认的页数的值。
$class = $_POST["leibie"];//取传过来的类别的值。
$fenlei = $_POST["fenlei"];//取传过来的分类的值。
if($fenlei=="全部资源")//如果分类是全部资源
{
$lie = $u->where("class='$class'")->page($n,'5')->select();//查询类别为目标类别的所有数据,调用thinkphp中的page方法,每页显示5条,和ajax里面的5要一致。
$this->ajaxReturn($lie);//将查询到的数据返回到ajax,注意默认返回的是JSON类型。
}
else//下面的只是在查询数据的时候又多加了一个条件。
{
$lie = $u->where("class='$class' and fenlei='$fenlei'")->page($n,'5')->select();
$this->ajaxReturn($lie);
}
} //点击类别后要显示的页数
public function pagechuli4()
{
$u = D("zy_list");//造对象
$class = $_POST["leibie"];//获取数据
$fenlei = $_POST["fenlei"];//获取数据
if($fenlei=="全部资源")
{
$sl = $u->where("class='$class'")->count();//查询类别是目标类别的所有数据的数量
$this->ajaxReturn($sl,"eval");//数据的数量是数字,返回的数据类型不能再是JSON了,在里面加上eval表示将返回的数据类型更改为TEXT,注意ajax页面接收的也必须是TEXT。
}
else//下面的查询数据的数量也只是多增加了一个条件
{
$sl = $u->where("class='$class' and fenlei='$fenlei'")->count();
$this->ajaxReturn($sl,"eval");
}
}

thinkphp中的ajax分页的更多相关文章

  1. ThinkPHP 整合Bootstrap Ajax分页

    ThinkPHP Ajax分页代码 publicfunction index() { $where=array(); $name = I('name'); if(!empty($name)){ $wh ...

  2. ThinkPHP中使用ajax接收json数据的方法

    本文实例讲述了ThinkPHP中使用ajax接收json数据的方法.分享给大家供大家参考.具体分析如下: 这里通过ThinkPHP+jquery实现ajax,扩展了下,写了个查询,前台代码如下: 首先 ...

  3. php--yii框架中的ajax分页与yii框架自带的分页

    要想使用Yii分页类 第一步:在控制器层加载分页类 use yii\data\Pagination; 第二步: 使用model层查询数据,并用分分页,限制每页的显示条数 $data = Zhao::f ...

  4. 在Thinkphp中使用AJAX实现无刷新分页

    在Thinkphp目录的Lib\ORG\Util\目录里新建AjaxPage.class.php,写入一下内容: <?php // +------------------------------ ...

  5. ASP.NET中实现Ajax分页

    在页面中指定一个div容器来接收动态生成的分页数据: <div id="div_menu"> </div> 使用jQuery来请求并处理Json格式数据: ...

  6. thinkphp中的AJAX返回ajaxReturn()

    系统支持任何的AJAX类库,Action类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端.并且支持JSON.XML和EVAL三种方式给客户端接受数据,通过配置DEFAULT_AJAX ...

  7. django项目中的ajax分页和条件查询。

    1,路由 #主页面路由 re_path('article/article_list/', article.article_list,name='article/article_list/'), #分页 ...

  8. 弹出框中的AJAX分页

    $(function() { $("body").on("click",".set-topic",function(){ /*获取所有题目接 ...

  9. tp5框架中jquery+ajax分页

    jaxa分页,点击按钮直接替换数据, //php代码$page=Request::instance()->param("page"); $page = empty($page ...

随机推荐

  1. libevent linux安装

    wget http://monkey.org/~provos/libevent-1.4.13-stable.tar.gzwget http://downloads.sourceforge.net/le ...

  2. 解决oracle数据库连接不上的问题

    今天打开部署好的java开发的网站系统,反应好慢,第一反应就是后台有问题. 查看tomcat一堆的报错信息,重启还是存在. 使用plSql连接数据库看看,登录提示如下:ORA-12514:TNS:监听 ...

  3. python3 与 python2的 区别比较

    http://sebug.net/paper/books/dive-into-python3/porting-code-to-python-3-with-2to3.html

  4. 50条规则提高PHP开发提高效率技巧

    0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作 参数的“函数”(译注:PHP手 ...

  5. Break on _NSLockError() to debug.

    *** -[NSCondition dealloc]: condition (<NSCondition: 0x1039a450> '(null)') deallocated while s ...

  6. java数据结构之链表的实现

    这个链表的内部是使用双向链表来表示的,但是并未在主函数中进行使用 /** * 链表 * 2016/4/26 **/ class LinkList{ Node head = new Node(); No ...

  7. dl以及dt,dd,以及table的tr,th,td最清楚分析

    1,定义:<dl> <dt> <dd>是一组合标签,使用了dt dd最外层就必须使用dl包裹,此组合标签我们也又叫表格标签,与table表格类似组合标签,故名我们也 ...

  8. POJ 2635 The Embarrassed Cryptographer(大数求余)

    题意:给出一个大数,这个大数由两个素数相乘得到,让我们判断是否其中一个素数比L要小,如果两个都小,输出较小的那个. 分析:大数求余的方法:针对题目中的样例,143 11,我们可以这样算,1 % 11 ...

  9. jq的合成事件

    jq中有两个合成事件 hover()和toggle() 1.hover() hover方法用于模拟光标悬停事件.当光标移动到元素上时,会触发指定的第一个函数(enter),当光标移出这个元素时,会触发 ...

  10. [转]学会Python可以有以下几类工作方向:

    Python开发工程师 :一般需要精通Python编程语言,有Django等框架的使用经验,实习无要求. Python高级工程师 : 北上广深的话,薪金在1万以上,需要精通Linux/Unixg平台, ...