最近给客户制作一个网站,客户用的是dedecms开源程序,其中需要使用到ajax点击加载案例,在网上查看了资料,简化了一下代码,下面展示一下,给需要的同学们。
最终形成的效果是下面的这种情况, 点击加载更多,加载下面的内容

首先在/plus/文件加下面新建一个list_case.php文件,代码如下:
- <?php
- /**
- *
- * 栏目列表/频道动态页
- *
- * @version $Id: list.php 1 15:38 2010年7月8日Z tianya $
- * @package DedeCMS.Site
- * @copyright Copyright (c) 2007 - 2010, DesDev, Inc.
- * @license http://help.dedecms.com/usersguide/license.html
- * @link http://www.dedecms.com
- */
- require_once(dirname(__FILE__)."/../include/common.inc.php");
-
- if(isset($_GET['ajax'])){
- $typeid = isset($_GET['typeid']) ? intval($_GET['typeid']): 0;//传递过来的分类ID
- $page = isset($_GET['page']) ? intval($_GET['page']): 0;//页码
- $pagesize = isset($_GET['pagesize']) ? intval($_GET['pagesize']): 15;//每页多少条,也就是一次加载多少条数据
- $start = $page>0 ? ($page-1)*$pagesize : 0;//数据获取的起始位置。即limit条件的第一个参数。
- $typesql = $typeid ? " WHERE typeid=$typeid" : '';//这个是用于首页实现瀑布流加载,因为首页加载数据是无需分类的,所以要加以判断,如果无需
- $total_sql = "SELECT COUNT(id) as num FROM `#@__archives` $typesql ";
- $temp = $dsql->GetOne($total_sql);
- $total = 0;//数据总数
- $load_num =0;
- if(is_array($temp)){
- $load_num= round(($temp['num']-15)/$pagesize);//要加载的次数,因为默认已经加载了
- $total = $temp['num'];
- }
- $sql = "SELECT a.*,t.typedir,t.typename,t.isdefault,t.defaultname,t.namerule,
- t.namerule2,t.ispart, t.moresite,t.siteurl,t.sitepath
- FROM `#@__archives` as a JOIN `#@__arctype` AS t ON a.typeid=t.id $typesql ORDER BY id DESC LIMIT $start,$pagesize";
- //echo "$sql";
- $dsql->SetQuery($sql);
- $dsql->Execute('list');
- $statu = 0;//是否有数据,默认没有数据
- $data = array();
- $index = 0;
- while($row = $dsql->GetArray("list")){
- $row['info'] = $row['info'] = $row['infos'] = cn_substr($row['description'],160);
- $row['id'] = $row['id'];
- $row['filename'] = $row['arcurl'] = GetFileUrl($row['id'],
- $row['typeid'],$row['senddate'],$row['title'],$row['ismake'],
- $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],
- $row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);
- $row['typeurl'] = GetTypeUrl($row['typeid'],$row['typedir'],
- $row['isdefault'],$row['defaultname'],$row['ispart'],
- $row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);
- if($row['litpic'] == '-' || $row['litpic'] == ''){
- $row['litpic'] = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';
- }
- if(!preg_match("#^http:\/\/#i", $row['litpic']) &&$GLOBALS['cfg_multi_site'] == 'Y'){
- $row['litpic'] = $GLOBALS['cfg_mainsite'].$row['litpic'];
- }
- $row['picname'] = $row['litpic'];//缩略图
- $row['stime'] = GetDateMK($row['pubdate']);
- $row['typelink'] = "<a href='".$row['typeurl']."'>".$row['typename']."</a>";//分类链
- $row['fulltitle'] = $row['title'];//完整的标题
- $row['shorttitle'] = $row['shorttitle'];//副标题
- $row['title'] = cn_substr($row['title'], 60);//截取后的标题
- $data[$index] = $row;
- $index++;
- }
- if(!empty($data)){
- $statu = 1;//有数据
- }
- $result =array($data);
- echo json_encode($result);//返回数据
- exit();
- }
复制代码
其次在 模板中使用ajax调用:
- <div class="remodal" data-remodal-id="modal">
- <ul id="caseLi">
- {dede:arclist typeid='5' pagesize='10'}
- <li><a href="[field:arcurl/]"><img src="[field:litpic/]" alt="[field:title/]" height="500" /></a></li>
- {/dede:arclist}
-
- </ul>
- <button id="loadMore" style="clear:both;width:80px; height:30px; border:none; background:#c2272b;line-height:30px; color:#fff; margin-top:20px;">加载更多</button>
- </div>
- <script type="text/javascript">
- var clickNum = 1;
- $("#loadMore").click(function(){
- clickNum +=1;
- $.ajax({
- url:'/plus/list_case.php',
- data:{typeid:5,page:clickNum,pagesize:10,ajax:'pullcase'},
- dataType:'json',
- success:function(data){
- $.each(data[0],function(idx,item){
- $("#caseLi").append('<li><a href="'+item.arcurl+'"><img src="'+item.picname+'" alt="'+item.title+'" height="500" /></a></li>');
- });
- }
- });
- });
-
- </script>
复制代码
以上的代码希望对大家有所帮助。
本文出自企尚网络论坛:http://www.sxqswl.net/bbs/forum.php?mod=viewthread&tid=138&fromuid=1