前段时间,群里有位同学问起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}) |
二、页面滑动到底部加载更多文章
原理同上,只不过改变一下事件,原来是点击按钮触发的,改成滚动监听。
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接口之后,获取数据更容易,使用更方便。
上一篇:PbootCms后台登陆不显示验证码【阿里云虚拟主机】
郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如无法下载,联系站长索要。
如有侵犯您的版权,请给我们来信:cainiaovip8@qq.com,我们尽快处理。