改造thinkphp 的 Page类,使其支持ajax方式
效果:
说明:thinkphp版本:3.2.1
步骤:
1、打开Page.class.php(路径:ThinkPHP/Library/Think)
找到第48行:
empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]);
改为:
empty(I($this->p)) ? 1 : intval(I($this->p));
实际是改为用内置的 I 函数读取传递进来的P参数,这样并不会影响原有的功能。
2、ajax方式的调用:
即前台html页面
<div>此处用来显示分页内容</div>
<br><br>
javascript: function jzry(p) {<br>
var request = $.ajax({<br>
url: "__MODULE__/Home/jzrh", //用ajax加载分页数据<br>
type: "POST",<br>
async: false,<br>
data:{p:p},<br>
beforeSend: function(xhr) {<br>
$('#message').html("正在加载数据,请稍候。");<br>
}<br>
});<br>
request.done(function(msg) {<br>
if (msg.bj == 'ok') {<br>
$('#rs').html(msg.page); //显示分页<br>
$("#rs a").removeAttr("href"); //删除原来的连接地址方式,<br>
<br>
//改用ajax按键事件<br>
$(".num,.end,.first").on("click", function(){<br>
jzry( $(this).text() );<br>
});<br>
$(".next").on("click", function(){<br>
jzry( parseInt($(".current").text())+1);<br>
});<br>
$(".prev").on("click", function(){<br>
jzry( parseInt($(".current").text())-1);<br>
});<br>
}});<br>
request.fail(function(jqXHR, textStatus) {<br>
$('#message').html("错误: " + textStatus);<br>
});<br>
}
样式: <style><br />
#rs a { color:#333;display:block; padding:0px 6px;<br />
font-weight:bold;float:left;border:1px solid #5d9cdf;<br />
height:20px; line-height:20px; margin:0px 2px;}<br />
.current { background:#a9d2ff; display:block; padding:0px 6px;<br />
font-weight:bold;;float:left}<br />
.clear{clear:both}<br />
</style>
3、后台使用和原来的一样 <br>
$user = M("user"); <br>
$User = $user->page($_POST['p'].',20')->order('id')->select();<br>
if ($User > 0) {<br>
$val['bj'] = 'ok';<br>
$count=$user->count();<br>
$Page=new \Think\Page($count,20);<br>
$val['page']=$Page->show();<br>
$this->ajaxReturn($val); //ajax方式返回<br>
}
AD:真正免费,域名+虚机+企业邮箱=0元