2013-05-13 45 views
0

我想使用ajax回调函数自动加载,但GetData函数在第一次使用相同参数后仍然保持调用状态。下面是我的javascript代码:首次调用后始终调用的Ajax回调函数

 var currentPage = 0; 
     var isFinished = false; 
     var lastScrollTop = 0; 
    $(window).data('ajaxready', true).scroll(function (e) { 
      if ($(window).data('ajaxready') == false) return; 


      $(window).scroll(function (event) { 
       var st = $(this).scrollTop(); 
       if (st > lastScrollTop) { 
        if (st > window.innerHeight) { 
         var amountValue = $("#amount").val(); 

         var firstPrice = 0; 
         var lastPrice = 10000; 

         InfiniteScroll(firstPrice, lastPrice); 
        } 

       } 

      }); 

     }); 



function InfiniteScroll(firstPrice, lastPrice) { 

      if (firstPrice < 0 || firstPrice == undefined) { 
       firstPrice = 0; 
      } 
      if (lastPrice < 0 || lastPrice == undefined) { 
       lastPrice = 10000; 
      } 

      if (isFinished) { 
       return; 
      } 


      $('#divPostsLoader').html('<img src="images/loader.gif">'); 

      var rawPath = window.location.pathname.split('/'); 
      var categoryId = rawPath[rawPath.length - 1]; 

      $("#load").show(); 



      $.ajax({ 
       type: "POST", 
       url: "http://localhost:60579/AjaxCallPage.aspx/GetData", 
       data: "{categoryId:" + categoryId + 
          ",page:" + currentPage + 
          ",skip:'9',firstPrice:" + firstPrice + ",lastPrice:" + lastPrice + "}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (data) { 
        if (data.d.length < 3) { 
         isFinished = true; 
        } 
        var products = JSON.parse(data.d); 
        $.each(JSON.parse(data.d), function() { 

         // ... do smth.. 



        }); 


        currentPage += 1; 

        $("#load").hide(); 
       } 
      }); 
     }; 

我不向下滚动,但它调用第一个电话后GetData功能。你有建议吗?

回答

0

的问题是在这里:

if (st > lastScrollTop) { 
       if (st > window.innerHeight) { 

检查出来,因为某种原因,在这部分功能无需滚动即可进入。如果我有时间,我会看看。