//通常在PC上咱們要分頁都是經過上一頁和下一頁來實現的,手機經過當下滑到必定程度的時候自動加載下一頁面
//實現思路:首先加載部分數據,當下滑到某個元素可見的時候,若是還有數據,則新發送請求,而後追加在當前頁面php
1、PC端ajax
/* *<div class='topicBox' id='listBox'> *</div> */
//判斷元素是否進入可視區域 function see(objLiLast) { //瀏覽器可視區域的高度 var see = document.documentElement.clientHeight; //滾動條滑動的距離 var winScroll = $(this).scrollTop(); //距離瀏覽器頂部的 var lastLisee = $(objLiLast).offset().top; return lastLisee < (see + winScroll) ? true : false; } //預設頁碼爲當前第一頁 var page = 1; //得到總頁碼 var pageTotal = parseInt($('#allpage').val()); //是否請求出AJAX的「開關」; var onOff = true; $(window).scroll(function () { //拖動滾條時,是否發送AJAX的一個「開關」 $('.topicBox').each(function () { //引用最後一個div var lastLi = $('.topicBox:last'); //調用是否進入可視區域函數 var isSee = see(lastLi); if (isSee && onOff && page < pageTotal) {//最底部元素可見,開關開啓並且還有下拉 //$('#loadNext').show(); //顯示正在加載圖標 onOff = false; $.ajax({ url: '/GetPageData', type: 'GET', dataType: 'json', data: { page: page+1 }, asyc: false, success: function (result) { if (result.status == 'success') { var data = result.result; for (var i = 0; i < data.length; i++) { //to do coding ... }; } //$('#loadNext').hide(); //隱藏正在加載 onOff = true; page ++; } }); } }); });
2、微信小程序端:wxmljson
<scroll-view class="scroll-container" upper-threshold="{{sortPanelDist}}" scroll-y="true" style="height:{{scrollHeight}}px;" bindscrolltolower="bindDownLoad"> <!-- 上面的scrollHeight參數必需要的,否則無法進行下一步,我這裏爲了兼容手機屏幕,使用的獲取系統自適應高度 --> <view class="con12"> <block wx:for="{{homeList}}" wx:for-item="homeList" wx:for-index="index"> <navigator url="../home_detail/home_detail?home_id={{homeList.s_id}}"> <view class="index1-list"> <image src="{{homeList.pic_url}}" class="indeximg"> <span class="money">¥{{homeList.price}}</span> </image> <span class="cunhome-title">西廂房 · {{homeList.vil_name}}--{{homeList.s_title}}</span> <view class="describe"> {{homeList.s_desc}} </view> </view> </navigator> </block> </view> <!-- 上面是循環的數據 --> </scroll-view>
js小程序
var page = 1; // 獲取數據的方法,具體怎麼獲取列表數據你們自行發揮 var GetList = function (that) { wx.request({ url: 'https://m.xxiangfang.com/index.php/Home/Xiaoxxf/home_service', //民宿預訂 data: { page: page }, header: { 'Content-Type': 'application/json' }, method: 'GET', success: function (res) { that.setData({ homeList: res.data }) page++; }, fail: function (res) { }, complete: function (res) { }, }) } Page({ /** * 生命週期函數--監聽頁面加載 */ onLoad: function (options) { var that = this; //緩衝提醒 wx.showToast({ title: '加載中', icon: 'loading', duration: 400 }) //獲取系統的參數,scrollHeight數值,微信必需要設置style:height才能監聽滾動事件 wx.getSystemInfo({ success: function (res) { console.info(res.windowHeight) that.setData({ scrollHeight: res.windowHeight }) } }); }, /** * 生命週期函數--監聽頁面顯示 */ onShow: function () { var that = this; GetList(that); //頁面初次展現調用第一次數據,好比說5條記錄 }, bindDownLoad: function () { // 該方法綁定了頁面滑動到底部的事件,下拉一次請求一次數據 wx.showToast({ title: '加載中', icon: 'loading', duration: 400 }) var that = this; GetList(that); //頁面拉一次,加載一次 }, })