美文网首页
ajax点击加载更多

ajax点击加载更多

作者: 毕竟1米八 | 来源:发表于2017-12-14 15:20 被阅读1060次

    ajax实现点击加载更多效果逻辑还是相对比较简单,点击按钮累加分页数据即可。

    一、说明

    首先,通过后端程序猿欧巴提供的接口,我们分别返回2个参数,list即数据列表内容,allnum即数据列表总数。然后,请求参数分别是count(页码)、num(数量)、type(文章类型,分别提供了参数1、2、3)

    二、技术栈

    jquery+es6

    三、关于参数

    我们约定一次请求5条数据、每点击按钮(加载更多)显示5条,即var num = 5。在这里注意一点,分页是从0开始的,即var count = 0。至于文章类型,我们随便写个参数var type = 2。

    四、默认加载

    首次默认加载5条数据,分页从0开始。这里,需要注意一点,就是判断当数据加载完成后及时让点击按钮的文字变成“没有更多数据”(否则需要点击一次按钮才能出现,降低了用户体验)。因此在首次加载完数据后,需要定义一个全局变量var isNum,然后获取服务器列表总数量,然后在点击更多按钮里进行if判断即可。

    $(function(){
      var num =
      $.ajax({
            url:'xxx',  //接口就不暴露了
            type:'get',
            data:{num:num,count:count,type:type},
            dataType: 'jsonp',
            beforeSend:function(){
                $('.getMore').html("加载中~"); 
            },
            success:function (data){
                // console.log(data.list);
                $('.getMore').html("加载更多"); 
                //当没有数据时list返回的是null
                if(data.list == null){
                    $('.getMore').html("暂无更多数据");
                    $('.getMore').attr('disabled',true);
                    return false;
                };
                //等数据加载成功后 如果列表数据总数量小于请求数量
                // alert(data.allnum);
                if(data.allnum <= num){
                    $('.getMore').html("暂无更多数据");
                    $('.getMore').attr('disabled',true);
                };
                //下面是es6写法 非常方便
                var html = '';
                for(let i = 0;i < data.list.length; i++){
                    html += `
                    <div class="message">
                    <div class="message-header"><img src="${data.list[i].pic}" alt="" width="23" height="23">
                    ${data.list[i].username}<span class="date">${data.list[i].time}</span></div>
                    <div class="message-content">
                        <a href="${data.list[i].id}">
                            <p>${data.list[i].article}</p>
                        </a>
                    </div>
                    <div class="message-footer">
                        <p><span>${data.list[i].comment}评论</span>·<span>${data.list[i].type}</span></p>
                    </div>
                </div>
                    `
                };
                $('.main').append(html);
                //默认加载完数据后 然后获取到服务器的数据总量
                isNum=data.allnum;
            },error: function() {
                $('.getMore').html("数据获取失败");
            }
      })
    })
    

    五、点击加载更多

    累加分页即可 count++;

    $('.getMore').click(function (){
      //累加分页 
       count++;
       $.ajax({
        //复制上面即可
        //上面说过,这里是用来判断数据加载完了
        if((isNum - (count+1)*num) <= 0){
             $('.getMore').html("暂无更多数据");
             $('.getMore').attr('disabled',true);
        };
      })
    })
    

    相关文章

      网友评论

          本文标题:ajax点击加载更多

          本文链接:https://www.haomeiwen.com/subject/bxtgixtx.html