SEARCH

PHPCMS V9 实现列表页下拉加载的方法

2018年01月06日

不废话,这里直接上源代码,可能遇到的常见问题如下:

常见问题:

1、下拉无法加载

使用Google Chrome浏览器访问按F12,查看控制台中是否存在js错误。

2、下拉重复显示

请确认排序是否一致

例如:前台调用标签 Order by updatetime DESC 是否与后端php SQL查询一致。

HTML部分

    <div id="lists">
    {pc:get sql="SELECT * FROM `rong_sheji` Order by updatetime DESC " num="12"}
    {loop $data $n $r}
       <figure>
        <a href="{$r[url]}">
          <div data-echo-background="{$r[thumb]}" style="background-image: url({$r[thumb]});"></div>
          <figcaption>
          <div class="right">
            <h3>{$r[title]}</h3>
            <small>{date('Y-m-d',$r[inputtime])}</small>
          </div>
          <div class="left">
            <span><i class="fa fa-heart-o"></i><small></small></span>
          </div>
          </figcaption>
        </a>
      </figure>
    {/loop}	
	{/pc} 
    </div>
    <div class="loadmore">
        <a id="loading" href="javascript:void(0);" style="display: block;">加载完成</a>
        </div>

JavaScript脚本部分

$(function(){
  var pager=1; /*定义开始页码*/
  var controller=true; /*定义控制器,防止重复加载*/
  $(window).scroll(function() { 
  /*监听滚动事件*/
      /*当内容滚动到底部时加载新的内容(注:当距离最底部100个像素时开始加载)*/
      if ($(this).scrollTop() + $(window).height() + 430 >= $(document).height() && $(this).scrollTop() > 430) {
         $("#loading").html("正在加载").show(); /*打开加载提示*/ 
         if(controller==true){/*如果控制器是开的*/
            controller=false;/*关闭加载*/
            pager=pager+1;/*当前要加载的页码*/		
            $.getJSON("{APP_PATH}api.php?op=sheji&page="+pager, function(data){

                  var i=0;

                  $.each(data,function(r){
                      i++;

                      var html='<figure><a href="'+data[r].url+'"><div data-echo-background="'+data[r].thumb+'" style="background-image: url('+data[r].thumb+');"></div><figcaption><div class="right"><h3>{$r[title]}</h3><small>{date('Y-m-d',$r[inputtime])}</small></div><div class="left"><span><i class="fa fa-heart-o"></i><small></small></span></div></figcaption></a></figure>';
                      
                      /*示例

                      var html='<a href="'+data[r].url+'">
                        <img src="'+data[r].thumb+'">
                        <dl>
                            <dt>['+data[r].catname+'] '+data[r].title+' - '+data[r].updatetime+'</dt>
                            <dd>'+data[r].description+'</dd>
                        </dl>
                      </a>';

                      */

                      $("#lists").append(html);/*追加到列表中*/

                  });/*end each*/

                  controller=true;/*开启加载*/
                  $("#loading").hide(); /*关闭加载提示*/ 

                  if(i==0){ 
                     $("#loading").html("加载完成").show();  
                  }

              });/*end getJSON*/
        
        
          }/*end if*/
          
      }/*end if*/
    });/*end scroll*/  
});/*end function*/

php接口部分

<?php
#网科技二次开发,直接取数据库表内容,单独调用字段#
defined('IN_PHPCMS') or exit('No permission resources.'); 

$db = '';
#加载内容模型
$db = pc_base::load_model('content_model');
#重定义加载的表名
$db->table_name = 'rong_sheji';

#加载缓存中的栏目名称,注 category_content_站点ID
$CATEGORYS = getcache('category_content_1','commons');

$page=isset($_GET['page'])?intval($_GET['page']):1;
#判断传入的page是否存在

#查询表数据
$data = $db->select(
	'status=99 ORDER BY `id` DESC LIMIT '.($page-1)*8 .' , ' . 8 .' '#根据实际情况调整where语句
	,'id,catid,title,thumb,url' #需要调取的字段,如需要全部字段则删除本段
);

#定义数组容器
$array=array();
#遍历查询到的数组,注:如不需要对 图片、时间、栏目进行转换可跳过遍历直接将$data输出
foreach ($data as $key => $value) {
		$array[]=array(
			"id"=>$value['id'],
			"title"=>$value['title'],
			"thumb"=>$value['thumb'],
			"url"=>$value['url']
		);
}

#将数组转换为json数据并输出
echo json_encode($array); 
?>


Contact

大同市城区西环路168号

致力于做服务最好的网站建设公司

将 " 策划+创意+体验+技术 " 完美融合 !

Wechat

微信公众号