您好,欢迎来到菜鸟吧源码网-本站资源仅供学习与参考,禁止用于商业或违法行为!
  • 首 页
  • 下载APP
  • 公告:菜鸟吧APP于2024.9.15正式上线,请首页右上角进入下载,本站资源均来源于互联网及会员投稿发布,所有资源仅供学习参考研究使用,请勿商用或其它非法用途,商用请购买正版,否则产生一切后果由用户自行承担!谢谢!

     

    当前位置:主页 > 站长学堂 > pbootcms >
    PbootCms制作ajax无刷新加载列表内容
    时间:2024-11-22 20:40 作者:菜鸟哥 浏览:收藏 挑错 打印

    前言

    前段时间,群里有位同学问起Ajax加载的问题,这个不属于模板制作系列教程的内容,因此单独再出一个使用技巧系列的教程。

    该系列会写一些pbootcms模板在使用过程中碰到的一些问题,以及问题的解决方案。

    大家也可以给我反馈一些问题,有空的时候我会选一些写出来放在这个系列的教程里面。

    友情提示

    Ajax无刷新加载内容,看起来高大上一点,但是对SEO是不太友好的,所以在使用的时候应该有个取舍。

    由于PbootCMS的Api接口的存在,在PbootCMS上实现Ajax加载还是比较方便的。

    实现步骤

    一、点击更多按钮加载内容

    1、首先,添加一个按钮用来触发事件。

    1<button class="more"type="submit">点击加载更多</button>


    2、添加默认显示的页面内容(只是演示,结构我就随意写了)

    1<div class="list">

    2{*pboot:list scode=3* num=2}

    3<div class="title">[*list:title*]</div>

    4<div class="desc">[*list:description*] </div>

    5<hr>

    6{*/pboot:list*}

    7</div>


    3、js代码部分,先引入jQuery

    01//先定义一些基本的内容

    02

    03//Page就是第几页,由当前页{page:current} + 1,就是第二页,parseInt确保该数值是Int类型。

    04var Page = parseInt('{page:current}') + 1;

    05

    06//Num就是每页几条信息,因为列表默认显示的是2条,所以这里设为2,结合上面的第二页实际上就是从第三条信息开始读取。

    07var Num  = 2;

    08

    09//定义内容的Dom位置,也就是读取出来的内容要添加到哪个div里面去。

    10var Dom  = jQuery('.list');

    11

    12//接下来写在点击按钮('.more')的时候触发事件

    13jQuery('#More').on('click', function(){

    14

    15//先构建Api的地址,具体的Api地址参数,请参考官方手册。

    16var url = '/api.php/list/3/page/'+ Page + '/num/'+ Num;

    17

    18//开始Ajax提交请求,请求路径就是Api接口

    19jQuery.ajax({

    20//请求类型

    21type: 'POST',

    22//请求地址

    23url: url,

    24//返回数据类型

    25dataType: 'json',

    26//请求参数,参考官方Api手册

    27data: {

    28appid: '{*pboot:appid*}',

    29timestamp: '{*pboot:timestamp*}',

    30signature: '{*pboot:signature*}',

    31},

    32//请求成功

    33success: function( response, status ){

    34//定义Data变量为返回的数据

    35var Data = response.data;

    36if( response.code ){

    37//获取数据成功,进行循环,value就是文章对象

    38jQuery.each( Data, function( index, value ){

    39//将内容append到列表

    40var Html = '<div class="title">'+ value.title + '</div><div class="desc">'+ value.description + '</div><hr>';

    41Dom.append( Html );

    42});

    43//分页+1,下次获取下一页的内容

    44Page += 1;

    45} else{

    46//返回数据错误

    47jQuery('#More').html('<span>'+ Data + '</span>');

    48}

    49},

    50//请求失败

    51error: function( xhr, status, error ){

    52//返回数据异常

    53console.log( error );

    54}

    55})

    56})


    完成,点击一下加载更多,页面就会无刷新加载2篇文章了。


    二、页面滑动到底部加载更多文章

    原理同上,只不过改变一下事件,原来是点击按钮触发的,改成滚动监听。

    01//使用jQuery的scroll()方法来监听页面滚动

    02jQuery(window).scroll(function(){

    03

    04//当前窗口和页面顶部的距离

    05var WindowTop = jQuery(window).scrollTop();

    06

    07//可视窗口区域高度

    08var WindowHeight = jQuery(window).outerHeight();

    09

    10//页面的高度

    11var DocHeight = jQuery(document).height();

    12

    13//定义一个开关

    14var load = true;

    15

    16//判断:(窗口与页面顶部距离 + 窗口高度) >= 页面的高度(也就是滚动到页面底部的时候),并且开关是开启状态,执行ajax加载内容

    17if( ( WindowTop + WindowHeight ) >= DocHeight && load == true){

    18

    19//请求地址

    20var url = '/api.php/list/3/page/'+ Page + '/num/'+ Num;

    21

    22//设置开关状态为关闭,防止重复加载

    23load = false;

    24

    25jQuery.ajax({

    26

    27//部分代码省略

    28......

    29

    30success: function( response, status ){

    31

    32var Data = response.data;

    33

    34if( response.code ){

    35

    36//获取数据成功

    37jQuery.each( Data, function( index, value ){

    38......

    39});

    40

    41//设置开关状态为开启,进行下次加载

    42load == true;

    43

    44//页码+1

    45Page += 1;

    46

    47} else{

    48

    49//返回数据错误

    50jQuery('#More').html('<span>'+ Data + '</span>');

    51

    52}

    53

    54},

    55

    56error:function( xhr, status, error ){ ...... }

    57

    58})

    59

    60}

    61

    62})


    总结

    Ajax并没有想象中的难度那么大,特别是有了PbootCMS的Api接口之后,获取数据更容易,使用更方便。


    郑重声明:
    本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
    我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法下载,联系站长索要。
    如有侵犯您的版权,请给我们来信:cainiaovip8@qq.com,我们尽快处理。

    pbootcms模板报错提示PHP Warning: Unknown: open_basedir restrictionpbootcms模板报错提示PHP Warning: Unk
    PbootCMS后台访问地址及默认帐号密码PbootCMS后台访问地址及默认帐号密码
    PbootCMS设置当前站点模板,模板子目录,黑白名单,敏感词过滤等PbootCMS设置当前站点模板,模板子目录,