[ECSHOP二次開發]解決分類商品Ajax連續請求導致的數據重覆

来源:http://www.cnblogs.com/poacher/archive/2017/08/17/7384623.html
-Advertisement-
Play Games

0x00: 首先聲明一個全局變數。 然後,在滑動處罰ajax請求的代碼處,做一個判斷。 if (control) { $('.get_more').click(); }; 這個地方是獲取數據的函數以及ajax請求的函數 0x01以上原理: 首先聲明一個全局變數設置為true,在觸發滑動時間的時候,判 ...


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>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 版本15.3更新在用戶離線下載時更加人性化,包含了進度顯示,下載出錯可以輸入R,進行下載的重新嘗試,併在當前下載框下繼續下載為完成的作業,結合 --layout 參數的離線文件的檢查和修複,並且在下載的完成後不會自動退出下載框,而是等待任意鍵的輸入。 本次針對15.3版本進行了中文語言的下載,在下載 ...
  • 回到目錄 DotNetCore里一切都是依賴註入的,對於appsettings這個可擴展的配置對象也不例外,它位於項目根目錄,一般在startup里去註冊它,在類中通過構造方法註入來獲取當前的對象,以便去使用它,當然我們也可以自己去構建和使用它,下麵我就來總結一下。 傳統方法,startup註入,構 ...
  • Overview Generally, one of the first steps when you are trying to work with databases is open it. You can find several types of those, and each have a ...
  • 因為在X86上long會被分割為兩個int進行操作, 那麼Interlocked.Increment的實現成為了一個問題。 在一番搜索後未發現有現成的文章解釋這個問題,於是我就動手分析了。 這篇是筆記,不會做過多的解釋。 首先重現環境是 .Net Core 2.0 Windows (x86) Bin ...
  • 最近工作感覺特別操心,不是因為任務多,也不是因為有解決不了的問題,而是感覺項目團隊太懶散了。大多數員工沒有工作積極性,工作經常拖延,公司沒有獎懲措施,做得好的、及時完成工作的與那些得過且過的、經常拖延工作計劃的人一樣待遇,沒有任何區別。導致一些沒有一定毅力的好員工也逐漸被同化。 公司部門的許可權分配不 ...
  • 網站地址:http://m.3y.uu456.com/mbp_56hl91r1rx5uqa87qrzo_1.html ...
  • 之前就瞭解到了裝飾器, 但是就會點皮毛, 而且對其調用方式感到迷茫,正好現在的項目我想優化,就想到了用裝飾器, 因此深入研究了下裝飾器.先看下代碼: 我的疑惑就是明明return 的是一個函數名,按道理來講,返回的就是一個函數地址啊!我理解有問題?隨後上網查資料,又是閉包....但是我個人對它不感冒 ...
  • 簡介 RabbitMQ是流行的開源消息隊列系統,用erlang語言開發。RabbitMQ是AMQP(高級消息隊列協議)的標準實現。 安裝 首先安裝erlang環境。 官網:http://www.erlang.org/ Windows版下載地址:http://erlang.org/download/o... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...