在Thinkphp目录的Lib\ORG\Util\目录里新建AjaxPage.class.php,写入一下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id: Page.class.php 2712 2012-02-06 10:12:49Z liu21st $
class AjaxPage {
// 分页栏每页显示的页数
public $rollPage = 5;
// 页数跳转时要带的参数
public $parameter ;
// 默认列表每页显示行数
public $listRows = 20;
// 起始行数
public $firstRow ;
// 分页总页面数
protected $totalPages ;
// 总行数
protected $totalRows ;
// 当前页数
protected $nowPage ;
// 分页的栏的总页数
protected $coolPages ;
// 分页显示定制
protected $config = array ( 'header' => '条记录' , 'prev' => '上一页' , 'next' => '下一页' , 'first' => '第一页' , 'last' => '最后一页' , 'theme' => ' %totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%' );
// 默认分页变量名
protected $varPage ;
$this ->totalRows = $totalRows ;
$this ->ajax_func = $ajax_func ;
$this ->parameter = $parameter ;
$this ->varPage = C( 'VAR_PAGE' ) ? C( 'VAR_PAGE' ) : 'p' ;
if (! empty ( $listRows )) {
$this ->listRows = intval ( $listRows );
}
$this ->totalPages = ceil ( $this ->totalRows/ $this ->listRows); //总页数
$this ->coolPages = ceil ( $this ->totalPages/ $this ->rollPage);
$this ->nowPage = ! empty ( $_GET [ $this ->varPage])? intval ( $_GET [ $this ->varPage]):1;
if (! empty ( $this ->totalPages) && $this ->nowPage> $this ->totalPages) {
$this ->nowPage = $this ->totalPages;
}
$this ->firstRow = $this ->listRows*( $this ->nowPage-1);
}
public function setConfig( $name , $value ) {
if (isset( $this ->config[ $name ])) {
$this ->config[ $name ] = $value ;
}
}
public function show() {
if (0 == $this ->totalRows) return '' ;
$p = $this ->varPage;
$nowCoolPage = ceil ( $this ->nowPage/ $this ->rollPage);
$url = $_SERVER [ 'REQUEST_URI' ].( strpos ( $_SERVER [ 'REQUEST_URI' ], '?' )? '' : "?" ). $this ->parameter;
$parse = parse_url ( $url );
if (isset( $parse [ 'query' ])) {
parse_str ( $parse [ 'query' ], $params );
unset( $params [ $p ]);
$url = $parse [ 'path' ]. '?' .http_build_query( $params );
}
//上下翻页字符串
$upRow = $this ->nowPage-1;
$downRow = $this ->nowPage+1;
if ( $upRow >0){
$upPage = "<a id='big' href='javascript:" . $this ->ajax_func. "(" . $upRow . ")'>" . $this ->config[ 'prev' ]. "</a>" ;
} else {
$upPage = "" ;
}
if ( $downRow <= $this ->totalPages){
$downPage = "<a id='big' href='javascript:" . $this ->ajax_func. "(" . $downRow . ")'>" . $this ->config[ 'next' ]. "</a>" ;
} else {
$downPage = "" ;
}
// << < > >>
if ( $nowCoolPage == 1){
$theFirst = "" ;
$prePage = "" ;
} else {
$preRow = $this ->nowPage- $this ->rollPage;
$prePage = "<a id='big' href='javascript:" . $this ->ajax_func. "(" . $preRow . ")'>上" . $this ->rollPage. "页</a>" ;
$theFirst = "<a id='big' href='javascript:" . $this ->ajax_func. "(1)' >" . $this ->config[ 'first' ]. "</a>" ;
}
if ( $nowCoolPage == $this ->coolPages){
$nextPage = "" ;
$theEnd = "" ;
} else {
$nextRow = $this ->nowPage+ $this ->rollPage;
$theEndRow = $this ->totalPages;
$nextPage = "<a id='big' href='javascript:" . $this ->ajax_func. "(" . $nextRow . ")' >下" . $this ->rollPage. "页</a>" ;
$theEnd = "<a id='big' href='javascript:" . $this ->ajax_func. "(" . $theEndRow . ")' >" . $this ->config[ 'last' ]. "</a>" ;
}
// 1 2 3 4 5
$linkPage = "" ;
for ( $i =1; $i <= $this ->rollPage; $i ++){
$page =( $nowCoolPage -1)* $this ->rollPage+ $i ;
if ( $page != $this ->nowPage){
if ( $page <= $this ->totalPages){
$linkPage .= " <a id='big' href='javascript:" . $this ->ajax_func. "(" . $page . ")'> " . $page . " </a>" ;
} else {
break ;
}
} else {
if ( $this ->totalPages != 1){
$linkPage .= " <span class='current'>" . $page . "</span>" ;
}
}
}
$pageStr = str_replace (
array ( '%header%' , '%nowPage%' , '%totalRow%' , '%totalPage%' , '%upPage%' , '%downPage%' , '%first%' , '%prePage%' , '%linkPage%' , '%nextPage%' , '%end%' ),
array ( $this ->config[ 'header' ], $this ->nowPage, $this ->totalRows, $this ->totalPages, $upPage , $downPage , $theFirst , $prePage , $linkPage , $nextPage , $theEnd ), $this ->config[ 'theme' ]);
return $pageStr ;
}
}
?>
|
控制器里写入以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
class UserAction extends Action{
public function user(){
import( "ORG.Util.AjaxPage" ); // 导入分页类 注意导入的是自己写的AjaxPage类
$credit = M( 'user' );
$count = $credit -> count (); //计算记录数
$limitRows = 5; // 设置每页记录数
$p = new AjaxPage( $count , $limitRows , "user" ); //第三个参数是你需要调用换页的ajax函数名
$limit_value = $p ->firstRow . "," . $p ->listRows;
$data = $credit ->order( 'id desc' )->limit( $limit_value )->select(); // 查询数据
$page = $p ->show(); // 产生分页信息,AJAX的连接在此处生成
$this ->assign( 'list' , $data );
$this ->assign( 'page' , $page );
$this ->display();
}
}
?>
|
模板文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<html>
<head>
<title>Ajax无刷新分页</title>
<script type= "text/javascript" src= "../Public/jquery-1.7.2.min.js" ></script>
<script type= "text/javascript" >
function user(id){ //user函数名 一定要和action中的第三个参数一致上面有
var id = id;
$.get( 'User/user' , { 'p' :id}, function (data){ //用get方法发送信息到UserAction中的user方法
$( "#user" ).replaceWith( "<div id='user'>" +data+ "</div>" ); //user一定要和tpl中的一致
});
}
</script>
</head>
<body>
<div id= 'user' > <!--这里的user和下面js中的test要一致-->
<volist id= 'list' name= 'list' > <!--内容输出-->
<{ $list .id}> <{ $list .username}><br/>
</volist>
<{ $page }> <!--分页输出-->
</div>
</body>
</html>
|
以上所述是小编给大家介绍的在Thinkphp中使用ajax实现无刷新分页的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!