<li id="u9fd8"><object id="u9fd8"><u id="u9fd8"></u></object></li>

  • <em id="u9fd8"><tr id="u9fd8"></tr></em>
    1. 全部 71 系統使用 30 環境部署 5 建站工具 6 視頻教程 15 開發日志 15

      使用技巧教程(一) - Ajax無刷新加載內容

      作者:緹墨網絡    時間:2018-11-10   訪問量:5149

      前段時間,群里有位同學問起Ajax加載的問題,這個不屬于模板制作系列教程的內容,因此單獨再出一個使用技巧系列的教程。

      該系列會寫一些PbootCMS在使用過程中碰到的一些問題,以及問題的解決方案。

      大家也可以給我反饋一些問題,有空的時候我會選一些寫出來放在這個系列的教程里面。


      Ajax無刷新加載內容,看起來高大上一點,但是對SEO是不太友好的,所以在使用的時候應該有個取舍。

      由于PbootCMS的Api接口的存在,在PbootCMS上實現Ajax加載還是比較方便的。


      一、點擊更多按鈕加載內容

      1、首先,添加一個按鈕用來觸發事件。

      <button class="more" type="submit">點擊加載更多</button>


      2、添加默認顯示的頁面內容(只是演示,結構我就隨意寫了)

      {pboot:pre}

      <div class="list">
          {pboot:list scode=3 num=2}
          <div class="title">[list:title]</div>
          <div class="desc">[list:description]</div>
          <hr>
          {/pboot:list}
      </div>

      {/pboot:pre}

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

      {pboot:pre}

      //先定義一些基本的內容
      
      //Page就是第幾頁,由當前頁0 + 1,就是第二頁,parseInt確保該數值是Int類型。
      var Page = parseInt('0') + 1;
      
      //Num就是每頁幾條信息,因為列表默認顯示的是2條,所以這里設為2,結合上面的第二頁實際上就是從第三條信息開始讀取。
      var Num  = 2;
      
      //定義內容的Dom位置,也就是讀取出來的內容要添加到哪個div里面去。
      var Dom  = jQuery('.list');
      
      //接下來寫在點擊按鈕('.more')的時候觸發事件
      jQuery('#More').on('click', function(){
      
          //先構建Api的地址,具體的Api地址參數,請參考官方手冊。
          var url = '/api.php/list/3/page/' + Page + '/num/' + Num;
          
          //開始Ajax提交請求,請求路徑就是Api接口
          jQuery.ajax({
              //請求類型
              type: 'POST', 
              //請求地址
              url: url,
              //返回數據類型
              dataType: 'json',
              //請求參數,參考官方Api手冊,在站內使用以下參數會自動獲取
              data: {
                  appid: '{pboot:appid}',
                  timestamp: '{pboot:timestamp}',
                  signature: '{pboot:signature}',
              },
              //請求成功
              success: function( response, status ){
                  //定義Data變量為返回的數據
                  var Data = response.data;
                  if( response.code ){
                      //獲取數據成功,進行循環,value就是文章對象
                      jQuery.each( Data, function( index, value ){
                          //將內容append到列表
                          var Html = '<div class="title">' + value.title + '</div><div class="desc">' + value.description + '</div><hr>';
                          Dom.append( Html );
                      });
                      //分頁+1,下次獲取下一頁的內容
                      Page += 1;
                  } else {
                      //返回數據錯誤
                      jQuery('#More').html('<span>' + Data + '</span>');
                  }
              },
              //請求失敗
              error: function( xhr, status, error ){
                  //返回數據異常
                  console.log( error );
              }
          })
      })

      {/pboot:pre}

      完成,點擊一下加載更多,頁面就會無刷新加載2篇文章了。


      二、頁面滑動到底部加載更多文章

      原理同上,只不過改變一下事件,原來是點擊按鈕觸發的,改成滾動監聽。

      //使用jQuery的scroll()方法來監聽頁面滾動
      jQuery(window).scroll(function(){
      
          //當前窗口和頁面頂部的距離
          var WindowTop = jQuery(window).scrollTop();
          
          //可視窗口區域高度
          var WindowHeight = jQuery(window).outerHeight();
          
          //頁面的高度
          var DocHeight = jQuery(document).height();
          
          //定義一個開關
          var load = true;
          
          //判斷:(窗口與頁面頂部距離 + 窗口高度) >= 頁面的高度(也就是滾動到頁面底部的時候),并且開關是開啟狀態,執行ajax加載內容
          if( ( WindowTop + WindowHeight ) >= DocHeight && load == true ){
          
              //請求地址
              var url = '/api.php/list/3/page/' + Page + '/num/' + Num;
              
              //設置開關狀態為關閉,防止重復加載
              load = false;
              
              jQuery.ajax({
              
                  //部分代碼省略
                  ......
                  
                  success: function( response, status ){
                      
                      var Data = response.data;
                      
                      if( response.code ){
                          
                          //獲取數據成功
                          jQuery.each( Data, function( index, value ){
                              ......
                          });
                          
                          //設置開關狀態為開啟,進行下次加載
                          load == true;
                          
                          //頁碼+1
                          Page += 1;
                          
                      } else {
                          
                          //返回數據錯誤
                          jQuery('#More').html('<span>' + Data + '</span>');
                          
                      }
                      
                  },
                  
                  error:function( xhr, status, error ){ ...... }
                  
              })
              
          }
          
      })


      總結:Ajax并沒有想象中的難度那么大,特別是有了PbootCMS的Api接口之后,獲取數據更容易,使用更方便。


      文章來源:https://www.timoo.net/content/75.html

      上一篇:模板制作教程(五) - 多級導航菜單

      下一篇:小程序教程之騰訊地圖及導航的使用

      返回頂部
      国产精品VA在线观看入口,91福利国产在线观看,,亚洲国产日韩欧美一区二区三区,国产精品无码一二区不卡免费