• [ECSHOP二次开发]解决分类商品Ajax连续请求导致的数据重复


    0x00:

    首先声明一个全局变量。

    var control = true;
    然后,在滑动处罚ajax请求的代码处,做一个判断。
     
    if (control) {
        $('.get_more').click();
    };

    这个地方是获取数据的函数以及ajax请求的函数

    get_data: function() {
        var ile;
    
    
        control=false;    //首先进来这个函数之后吧全局变量设置成false以防重复请求
    
    
        lock = true;
        target.children(".more_loader_spinner").css('display', 'block');
        $(settings.trigger).css('display', 'none');
        if (typeof(arguments[0]) == 'number') ile = arguments[0];
        else {
            ile = settings.amount;
        }
        if(variables.last >= cur_last){
                    var postdata = settings.data;
                    postdata['last'] = variables.last;
                    postdata['amount'] = ile;
                    $.post(settings.address, postdata, function(data){  
                    $(settings.trigger).css('display', 'block')
                    methods.add_elements(data)
    
    
                    control=true; //ajax请求完之后,重新吧全局变量设置回true,方便继续请求下去。
                    //注意:根据测试这里是要在lock的上面,否则失败,根据目前观察,是因为上面有判断lock==false的条件,所以要吧全局变量放在loca的上面
    
    
    
                }, settings.format)
            cur_last  = cur_last+6;
    
        
        }
    
    }

    0x01以上原理:

        首先声明一个全局变量设置为true,在触发滑动时间的时候,判断全局变量是否为true,如果为true则继续触发,否则不触发,
    然后在获取数据,在Ajax请求数据前将全局变量设置成false,防止数据的重复请求,之后在Ajax执行完后,在吧全局变量改成true。
    这个时候,就可以再次处罚滑动事件,如此的循环下去了。
     
     
    其他完整示例代码:
    <script type="text/javascript">
    
    
    
        function dosearch(keyword){
            $('#keyword').val(keyword);
            getContent = get_next_page(1,<?php echo isset($_GET['cate_id'])?$_GET['cate_id']:'1';?>,1);
        }
    
        function select_all(){
            get_next_page(1,<?php echo isset($_GET['cate_id'])?$_GET['cate_id']:'1';?>,1);
        }
    
        $(function(){
            get_next_page(1);
        })
    
        var control=true;
        $(window).on("scroll",function(){
            if($(document).scrollTop()+$(window).height()>=$(document).height()){
                if(control){
                    $(".static-box").html("<p>正在加载...</p>");
                    $(document).scrollTop($(document).scrollTop()+100);
                    get_next_page();
                }
            }
        });
    
        get_next_page = function (getpage,get_cate_id,setempty) {
    
            if(get_cate_id){
                $('#cate_id').val(get_cate_id)
            }
    
            var cate_id = $('#cate_id').val();
            var b_id = $('#b_id').val();
            var store_id = $('#store_id').val();
            var key = $('#key').val();
            var order = $('#order').val();
            var keyword = $('#keyword').val();
    
            if(getpage){
                page = 1;
            }else{
                var page = parseInt($('.order_page:last').val());
                page += 1;
            }
    
            var url = 'index.php?act=mall&op=index&cate_id='+cate_id+'&store_id='+store_id+'&b_id='+b_id+'&key='+key+'&order='+order+'&getact=next_page&curpage='+page+'&keyword='+keyword;
    
            control=false;
    
            $.ajax({
                type:'GET',
                url:url,
                data:'',
                dataType:'html',
                success:function(data){
                    if(!data || data=="" || data == "clear"){
                        control=false;
                        if(data == 'clear'){
                            $(".minwrap").empty();
                        }
                        $(".static-box").html("<p>没有更多数据了...</p>");
                        setTimeout(function(){
                            $(".static-box").html("");
                        },1000)
                        return false;
                    }
                    $(".order_page").remove();
                    if(setempty == 1){
                        $(".minwrap").html(data);
                        $('html, body').animate({scrollTop:0}, 'slow');
                    }else{
                        $(".minwrap").append(data);
                    }
                    $("img.lazy").show().lazyload({
                        effect : "fadeIn",
                        threshold : 200
                    });
                    control=true;
                }
            });
        }
    </script>
    版权声明:若无注明,本文皆为“Poacher'Blog”原创,转载请保留文章出处。
    免责声明:学习网络技术是为了更好的提升自我安全意识。不允许将内容私自传播、销售或者其他任何非法用途!否则,一切后果请用户自负!如对站内文章或者软件有异议,请联系博主!联系QQ:177705712
  • 相关阅读:
    连通图是不是欧拉图
    P1127 词链 题解
    ClickHouse的JDBC连接
    ClickHouse集群搭建和使用
    ClickHouse引擎
    ClickHouse 的安装和使用
    SNMP3安装
    解决springboot打不出业务log
    如何用电脑下载微信视频号中的视频?
    【Swing】如何打开文件选择对话框,选择文件
  • 原文地址:https://www.cnblogs.com/poacher/p/7384623.html
Copyright © 2020-2023  润新知