当没有更多记录时,如何停止调用滚动功能来调用ajax

时间:2013-06-06 12:00:55

标签: jquery

我正在使用以下代码在用户到达页面加载时加载产品并且它对我来说工作正常。但问题是当没有更多产品和用户再次向上和向下滚动时。它再次调用ajax函数。我想停止那个调用,意味着一旦所有prodcut加载,那么应该没有更多的ajax调用。

 $(window).on('scroll', function() {

                if ($(window).scrollTop() == ($(document).height() - $(window).height())) {
                    $('#loader').show();
                    var tl = $('.tlt').val();
                    var hdnCategoryId = $('.hdnCategoryId').val();
                    alert(tl);
                    $.ajax(
                   {
                       type: "POST",
                       url: "http://localhost/r/subcategorydetail.aspx/GetProducts121",
                       data: "{t:" + tl + ",Id:" + hdnCategoryId + "}",
                       contentType: "application/json",
                       dataType: "json",
                       success: function(rsp) {
                           $('.wrapperDIV').append(rsp.d.outputString);

                           $('.tlt').val($('.wrapperDIV input.lastId').eq(-1).val());

                       },
                       error: function(rsp) {
                           alert("error");
                           //alert(rsp.status + " " + rsp.statusText + "</br>" + rsp.responseText);
                           console.log(rsp);
                           console.log(rsp.responseText);

                       },
                       complete: function() {
                           $('#loader').hide();
                       }
                   });
                }
            });

1 个答案:

答案 0 :(得分:1)

维持旗帜。 当ajax调用然后取一个变量并为它赋值 - 如-false。 并在通话完成后给出一个值 - 真实。

每当你ajax调用时,只要chekc falg的值,如果它是真的,那么就不要打电话给其他人。

像..

           var flag=true;
           $(window).on('scroll', function() {
            if(flag)
            {
                flag=false;
                if ($(window).scrollTop() == ($(document).height() - $(window).height())) {

                $.ajax(
               {
               },
                   complete: function() {
                       flag=true;

                   }
               });
            }
         }
        });