前段時(shí)間,群里有位同學(xué)問起Ajax加載的問題,這個(gè)不屬于模板制作系列教程的內(nèi)容,因此單獨(dú)再出一個(gè)使用技巧系列的教程。該系列會(huì)寫一些pbootcms在使用過程中碰到的一些問題,以及問題的解決方案。
大家也可以給我反饋一些問題,有空的時(shí)候我會(huì)選一些寫出來放在這個(gè)系列的教程里面。Ajax無刷新加載內(nèi)容,看起來高大上一點(diǎn),但是對SEO是不太友好的,所以在使用的時(shí)候應(yīng)該有個(gè)取舍。由于pbootcms的Api接口的存在,在pbootcms上實(shí)現(xiàn)Ajax加載還是比較方便的。
使用方法
一、點(diǎn)擊更多按鈕加載內(nèi)容
1、首先,添加一個(gè)按鈕用來觸發(fā)事件。
{pboot:listscode=3num=2}[list:title][list:description]{/pboot:list}3、js代碼部分,先引入jQuery
//先定義一些基本的內(nèi)容//Page就是第幾頁,由當(dāng)前頁{page:current}+1,就是第二頁,parseInt確保該數(shù)值是Int類型。varPage=parseInt('{page:current}')+1;//Num就是每頁幾條信息,因?yàn)榱斜砟J(rèn)顯示的是2條,所以這里設(shè)為2,結(jié)合上面的第二頁實(shí)際上就是從第三條信息開始讀取。varNum=2;//定義內(nèi)容的Dom位置,也就是讀取出來的內(nèi)容要添加到哪個(gè)div里面去。varDom=jQuery('.list');//接下來寫在點(diǎn)擊按鈕('.more')的時(shí)候觸發(fā)事件jQuery('#More').on('click',function(){//先構(gòu)建Api的地址,具體的Api地址參數(shù),請參考官方手冊。varurl='/api.php/list/3/page/'+Page+'/num/'+Num;//開始Ajax提交請求,請求路徑就是Api接口jQuery.ajax({//請求類型type:'POST',//請求地址url:url,//返回?cái)?shù)據(jù)類型dataType:'json',//請求參數(shù),參考官方Api手冊data:{appid:'{pboot:appid}',timestamp:'{pboot:timestamp}',signature:'{pboot:signature}',},//請求成功success:function(response,status){//定義Data變量為返回的數(shù)據(jù)varData=response.data;if(response.code){//獲取數(shù)據(jù)成功,進(jìn)行循環(huán),value就是文章對象jQuery.each(Data,function(index,value){//將內(nèi)容append到列表varHtml=''+value.title+''+value.description+'';Dom.append(Html);});//分頁+1,下次獲取下一頁的內(nèi)容Page+=1;}else{//返回?cái)?shù)據(jù)錯(cuò)誤jQuery('#More').html(''+Data+'');}},//請求失敗error:function(xhr,status,error){//返回?cái)?shù)據(jù)異常console.log(error);}})})完成,點(diǎn)擊一下加載更多,頁面就會(huì)無刷新加載2篇文章了。
//使用jQuery的scroll()方法來監(jiān)聽頁面滾動(dòng)jQuery(window).scroll(function(){//當(dāng)前窗口和頁面頂部的距離varWindowTop=jQuery(window).scrollTop();//可視窗口區(qū)域高度varWindowHeight=jQuery(window).outerHeight();//頁面的高度varDocHeight=jQuery(document).height();//定義一個(gè)開關(guān)varload=true;//判斷:(窗口與頁面頂部距離+窗口高度)>=頁面的高度(也就是滾動(dòng)到頁面底部的時(shí)候),并且開關(guān)是開啟狀態(tài),執(zhí)行ajax加載內(nèi)容if((WindowTop+WindowHeight)>=DocHeight&&load==true){//請求地址varurl='/api.php/list/3/page/'+Page+'/num/'+Num;//設(shè)置開關(guān)狀態(tài)為關(guān)閉,防止重復(fù)加載load=false;jQuery.ajax({//部分代碼省略......success:function(response,status){varData=response.data;if(response.code){//獲取數(shù)據(jù)成功jQuery.each(Data,function(index,value){......});//設(shè)置開關(guān)狀態(tài)為開啟,進(jìn)行下次加載load==true;//頁碼+1Page+=1;}else{//返回?cái)?shù)據(jù)錯(cuò)誤jQuery('#More').html(''+Data+'');}},error:function(xhr,status,error){......}})}})總結(jié):Ajax并沒有想象中的難度那么大,特別是有了pbootcms的Api接口之后,獲取數(shù)據(jù)更容易,使用更方便。
版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會(huì)員發(fā)布,如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!
轉(zhuǎn)載請注明: pbootcms列表內(nèi)容ajax無刷新加載數(shù)據(jù)的方法