javascript - 移动端: 滑动到页面底部触发ajax. PC上触发正常。移动端上多次触发,怎么回事
巴扎黑
巴扎黑 2017-04-11 09:01:12
[JavaScript讨论组]
//javascript

$(function(){

    waitAajxDataLoad();

    getMoreModelList();

});


function getMoreModelList(){
    var page = 1;
    var flag = true;
  
    loadModeList();

    $(window).scroll(function(){
       scrollFn();
    });


    function scrollFn(){
        var documentHeight = $(document).height();
        var windowHeight = parseInt($(this).height());
        var windowScrollTop = parseInt($(this).scrollTop());

        if(documentHeight <= windowHeight){
            return false;
        }
        
        if(windowHeight + windowScrollTop >= documentHeight){
            if(flag === true){
                loadModeList();
            }
        }
    }

    
    function loadModeList(){
        var loading = $(".js-model-list");
        var url = getScriptObj(".js-be-api").getMoreCarModel;
        var modelWrap = $(".js-model-list");
        var html = "";

        $(window).unbind('scroll');

        $.ajax({
            // async: false,
            url: url,
            type: "POST",
            dataType: "JSON",
            data: {
                page: page
            }
        }).done(function(data){
           
            $(window).scroll(function(){
               scrollFn();
            });

            if(data.status === 0){
                html = renderTemplate(data);
                modelWrap.append(html);
                page++;

            }else if(data.status === 3){
                msg.toast(data.msg);
                flag = false;
            }

            lazyLoadImg();

        }).fail(function(){
            msg.toast("网络开了会小差");
        });
    }
}


function renderTemplate(data){
    var html = "";

    for(var i in data.data){
        
        html += "
  • " + "" + "" + "

    " + data.data[i].title + "

    "; if ( data.data[i].discount_type === '1'){ html += "

    " + data.data[i].discount + "

    "; }else if (data.data[i].discount_type === '2'){ html += "

    " + data.data[i].discount + "

    "; } html += "

    " + "" + data.data[i].activity_price + "" + "¥" + data.data[i].guide_price+ "万

  • "; } return html; } function waitAajxDataLoad(){ $(document).ajaxStart(function(){ $(".js-load").addClass('active'); }); $(document).ajaxComplete(function(){ $(".js-load").removeClass('active'); }); } function lazyLoadImg(){ var imgs = $(".js-model-list li img"); imgs.error(function(){ var $this = $(this); $this.attr("src", "/exchange/Public/dev/img/pbl/defaultpic.jpg"); }); } //html

    正在加载...

    为什么这样写,手机浏览器还是会多次加载呢

    巴扎黑
    巴扎黑

    全部回复(1)
    阿神

    增加判断条件 X

    请求AJAX时设置为 x = true, 请求完成之后(无论失败或者成功)设置这个值为 false;

    触发时判断X的值。

    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号