1. 程式人生 > >網頁拉到底部後,點選重新整理按鈕或F5,頁面內容重複顯示

網頁拉到底部後,點選重新整理按鈕或F5,頁面內容重複顯示

正常情況:

重複顯示後:

產生問題的原因:queryActs()----queryActsAdd() 進入到改方法中了,但是還沒走到flag=false的時候,scoll觸發,此時的flag = true,因此又載入了一次queryActsAdd方法。【是不是就是類似於高併發的時候沒有加鎖導致的資料異常】

解決方案:加loading標誌位,

與flag(原有)標誌位的區別:詳情見程式碼

加鎖!!!!

var flag = true;var loading=false; queryActs();

function queryActs(){
   pageNum = 1;
   flag = true;
   $("#acts_timeline").html("");
   !loading&&
queryActsAdd(); }

function queryActsAdd() {

    var uid =      var url =           loading=true;     $.ajax({         type : "POST", // 提交方式         // async:false,         data : {             pageNum : pageNum,             level : activityLevel,             status : activityStatus         },         dataType : 'json',         url : url,         success : function(obj) {// 返回資料根據結果進行相應的處理             var totalRecord = obj.total;             $("#total_record").html(totalRecord);  //設定總數             loading=false;

            //無活動資料時             if(totalRecord==0){                 //顯示無活動提示圖片                 $("#acts_timeline").append("<div class='act-no tc'>現在還沒有活動哦~~</div>");                 flag = false;             }else{      //有活動資料時                 var totalPages = obj.pages; //總頁數                 if(obj.pageNum >= totalPages){                     flag = false;//當和總頁數相等時不再滾動載入                 }                                  var htmlTemp = template('actsTimelineTemplate', obj);                 $("#acts_timeline").append(htmlTemp);                              }         }     }); }

//滾動載入資料 $(window).scroll(function() {     if ($(document).scrollTop() >= $(document).height() - $(window).height()) {         console.log(flag);

        if(flag===true){             pageNum = pageNum + 1;             !loading&&queryActsAdd();         }

    } });