0
 $(document).ready(function() {
        $(window).on('scroll', function(e) {

                if (($(window).scrollTop()) >= $(document).height() - $(window).height()) {


                    $('#loader').show();
                    $('#LoadMore').hide();
                    var tl = $('.tlt').val();
                    var hdnCategoryId = $('.hdnCategoryId').val();
                    var hdnFilter = $("#<%= hdnFilter.ClientID%>").val();

                    $.ajax(
               {
                   type: "POST",
                   url: "http://example.com/product/subcategorydetail.aspx/GetProducts121",
                   data: "{t:" + tl + ",Id:" + hdnCategoryId + ",hdnFilter: '" + hdnFilter + "'}",
                   contentType: "application/json",
                   dataType: "json",
                   success: function(rsp) {

                       $('.wrapperDIV').append(rsp.d.outputString);

                       $('.tlt').val($('.wrapperDIV input.lastId').eq(-1).val());
                         alert($('.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();

                   }
               });

                }

            });
        });

当用户使用滚动到达窗口末尾时,我正在使用上面的代码加载更多产品。但问题是它一次又一次地生成 ajax 请求。我正在使用最后加载的产品 ID 来获取下一组产品。因此,如果我以快速方式滚动,我不会每次都获得最后一个产品的不同 ID,而是一次又一次地获得相同的 ID,但是如果我滚动并等待渲染第一个结果集包含在 DOM 中,这将非常完美。

4

1 回答 1

1

我会添加一些布尔标志,指示是否正在加载产品。您应该检查标志作为滚动处理程序中的第一个操作。当您进入 if 语句时,该标志应设置为 true,并在 ajax 完成处理程序上重置为 false。

于 2013-06-20T06:42:36.180 回答