基本原理:页面载入时,jQuery向后台请求数据,PHP通过查询数据库将最新的几条记录显示在列表页,在列表页的底部有个“更多”链接,通过触发该链接,向服务端发送Ajax请求,后台PHP程序得到请求参数,并作出相应,获取数据库相应的记录并以JSON的形式返回给前台页面,前台页面jQuery解析JSON数据,并将数据追加到列表页。其实就是Ajax分页效果。
HTML
首先要引入html">jquery库和jquery.more.js插件,jquery.more.js已经将许多功能都封装好了,并提供了参数配置的功能。
1
2
|
<script type= "text/javascript" src= "jquery.js" ></script> <script type= "text/javascript" src= "jquery.more.js" ></script> |
xhtml结构如下:
1
2
3
4
5
6
7
8
9
|
< div id = "more" > < div class = "single_item" > < div class = "element_head" > < div class = "date" ></ div > < div class = "author" ></ div > </ div > < div class = "content" ></ div > </ div > |
值得一提的是,样式single_item,get_more是和jquery.more.js插件关联的,你也可以取另外的class名字,但是在配置的时候一定要将对应的class写上。
CSS
1
2
3
4
5
6
7
8
|
#more{ margin : 10px auto ; width : 560px ; border : 1px solid #999 ;} .single_item{ padding : 20px ; border-bottom : 1px dotted #d3d3d3 ;} .author{ position : absolute ; left : 0px ; font-weight : bold ; color : #39f } .date{ position : absolute ; right : 0px ; color : #999 } .content{ line-height : 20px ; word-break: break- all ;} .element_head{ width : 100% ; position : relative ; height : 20px ;} .get_more{ margin : 10px ; text-align : center } .more_loader_spinner{ width : 20px ; height : 20px ; margin : 10px auto ; background : url (loader.gif) no-repeat ;} |
以上CSS是本例中定制的,当然,大家可以在实际项目中定制不同的样式。注意,more_loader_spinner是定义加载动画图片的。
jQuery
1
2
3
|
$( function (){ $( '#more' ).more({ 'address' : 'data.php' }) }); |
使用很简单,配置了后台地址:data.php,来看data.php是怎么处理数据的。
PHP
data.php链接数据库,本例使用本站文章PHP+Mysql+jQuery实现发布微博程序--PHP篇相同的数据表。
1
2
3
4
5
6
7
8
9
10
11
12
|
require_once ( 'connect.php' ); $last = $_POST [ 'last' ]; $amount = $_POST [ 'amount' ]; $user = array ( 'demo1' , 'demo2' , 'demo3' , 'demo3' , 'demo4' ); $query =mysql_query( "select * from say order by id desc limit $last,$amount" ); while ( $row =mysql_fetch_array( $query )) { $sayList [] = array ( 'content' => $row [ 'content' ], 'author' => $user [ $row [ 'userid' ]], 'date' => date ( 'm-d H:i' , $row [ 'addtime' ]) ); } echo json_encode( $sayList ); |
data.php接收前台页面提交过来的两个参数,$_POST['last']即开始记录数,$_POST['amount']即单次显示记录数,看SQL语句就明白,其实就是分页中用到的语句。
然后将查询的结果以JSON格式输出,PHP的任务就完成了。
最后来看下jquery.more.js的参数配置。
1
2
3
4
5
6
7
|
'amount' : '10' , //每次显示记录数 'address' : 'comments.php' , //请求后台的地址 'format' : 'json' , //数据传输格式 'template' : '.single_item' , //html记录DIV的class属性 'trigger' : '.get_more' , //触发加载更多记录的class属性 'scroll' : 'false' , //是否支持滚动触发加载 'offset' : '100' , //滚动触发加载时的偏移量 |
本文DEMO中需要单击才能加载更多内容,接下来的文章我将会制作通过滚动条来触发加载更多内容的DOMO,敬请关注。
以上这篇php+jquery+html实现点击不刷新加载更多的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。