最近刚刚学习 THINKPHP ,在实践中需要异步更新表格数据 ,类ORG.Util.Ajax Page提供GET刷新方式。
也看到有朋友提出了AJAX实现的PAGE类,不过看代码 貌似只是实现了第一次显示,分页 显示的连接好像没有改变。
我基于PAGE类,修改实现了其AJAX版本,基本达到我预期目标。请各位专家不吝赐教。
改进思想
========
1. 读取POST参数
2. 改进URL 为JAVASCRIPT方式的AJA[attach]1469[/attach]X函数
使用方法
========
1. 控制类(Controller)
public function phpAjaxMethod()
{
$Form = D('Your Model');
header("Content-Type:text/html ; charset=utf-8");
import ("ORG.Util.AjaxPage");
$count = $Form->order('id')->count(); //计算记录数
$limitRows = 3; // 设置 每页记录数
$p = new AjaxPage($count, $limitRows, "你页面 的Ajax函数名");
$limit_value = $p->firstRow . "," . $p->listRows;
$data = $Form->order('id')->limit($limit_value)->select(); // 查询 数据
$page = $p->show(); // 产生分页信息,AJAX的连接在此处生成
// 以下处理和正常查询一样
// AJAX返回数据
$this->ajaxReturn($ajax_data, $ajax_info, 1);
}
2. 视图 (View)
视图中必须定义 JavaScript编写的AJAX处理函数,例如:
function myAjaxQuery()
{
var page_arg = arguments[0] || "";
var other_param = $('param_id').value;
ThinkAjax .send('__URL__/phpAjaxMethod','ajax=1&other_param='+other_param+page_arg, AJAX返回处理函数, '信息标签 ID');
}
代码
========
参见附件,说明如下:
1. 将ThinkPHP/Lib/ORG/Util/Page.class .php复制一份,更名为AjaxPage.class.php
2. 添加AJAX函数名,增加变量:protected $ajaxFunc;
3. 添加构造函数参数$ajax_func:public function __construct($totalRows,$listRows,$ajax_func,$parameter=''),并在构造函数中进行赋值 :$this->ajaxFunc = $ajax_func;
4. 采用POST方式,原代码为:
$this->nowPage = !empty($_GET[C('VAR_PAGE')])?$_GET[C('VAR_PAGE')]:1;
修改后为:
$this->nowPage = !empty($_POST[C('VAR_PAGE')])?$_POST[C('VAR_PAGE')]:1;
5. 所有涉及到url赋值的部分进行如下修改:
原代码:
if ($upRow>0){
$upPage="<a href='".$url."&".$p."=$upRow'>".$this->config['prev']."</a>";
}else{
$upPage="";
}
修改后代码:
$href_str = "'javascript:".$this->ajaxFunc."('&".$p."=$upRow')'";
if ($upRow>0){
$upPage="<a href=" . $href_str . ">".$this->config['prev']."</a>";
}else{
$upPage="";
}
thinkphp AJAX实现的PAGE类
最新推荐文章于 2021-08-05 14:13:16 发布