最近刚刚学习THINKPHP,在实践中需要异步更新表格数据,类ORG.Util.AjaxPage提供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(); //计算记录数wedding jewelry sets
$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赋值的部分进行如下修改:
原代码:replica handbags
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="";
}
转载于:https://www.cnblogs.com/imadin/archive/2011/05/19/2051159.html