iT邦幫忙

0

lazyload + ajax ,沒有資料的時候的處理?

var $isFetchingNotes = false;

  $(window).scroll(function(){
    if($('#loader-blog').hasClass('nomore')) {
      return false;
    }

    var $scroll = $(window).scrollTop();
    var $docHeight = $(document).height();
    var $winHeight = $(window).height();

    if($scroll === $docHeight - $winHeight){

      if(!$isFetchingNotes) {

        $isFetchingNotes = true;

        $('#loader-blog').html('<img src="/images/lazyload40.svg">');

        var lastDiv = $('.data-display-blog:last');
        var lastId  = $('.data-display-blog:last').attr('id');
        var type  = $('.data-display-blog:last').attr('data-type');
        var query  = $('.data-display-blog:last').attr('data-query');
        var dataTo = 'lastid='+lastId+'&type='+type+'&query='+query;

        $.ajax({
          type: 'POST',
          url:'app',
          data: dataTo,
          cache: false,
          success: function(data){
            if(data != ''){
              lastDiv.after(data);
            }else{
              $('#loader-blog').addClass('nomore').html('nodata');
            }
          },
          complete: function () {
            $isFetchingNotes = false;
          }
        });

      }
    }
  });

我發現 scroll 滑到底的時候,即使後端數據是 空
他也不會執行 $('#loader-blog').addClass('nomore').html('nodata'); 這段?
我在裡面有加了 alert事件,但是都遲遲沒有反應。
但我用谷歌 inspect 檢查 <div id="#loader-blog"></div> 每次滑下去都是有觸發東西的,會閃一下。(後來發現可能是觸發 $('#loader-blog').html('<img src="../images/loading_v2.svg">');
怎麼會這樣呢?

我即使變成這樣:

if(data != ''){
              lastDiv.after(data);
            }else if(data == ''){
              $('#loader-blog').addClass('nomore').html('no-data');
            }

卻還是沒有反應?
我確定後端給的值是「空」的, 也就是 data == ''

froce iT邦高手 2 級 ‧ 2018-10-03 05:05:24 檢舉
你確定你data是''?
有console.log(data)出來看過最後沒data的時候是什麼東西嗎?
fillano iT邦超人 1 級 ‧ 2018-10-03 09:40:59 檢舉
說不定是有空白或換行字元之類XD

尚未有邦友回答

立即登入回答