javascript - 如何修复无限滚动表?

标签 javascript jquery json

我正在努力构建一个无限滚动表,其中填充了由json-server创建的fakejs用户的姓名、电子邮件和地址数据。我想每页显示 50 个数据点,然后当向下滚动到页面末尾时,将加载另外 50 个数据点。我怎样才能做到这一点?我发现我的代码到目前为止还不起作用,因为当我向下滚动时,它没有加载另一批数据......

$(document).ready(function() {
  var currentPageNumber = 1;
  loadData(currentPageNumber);
  if($(window).scrollTop() == $(document).height() -           $(window).height()){  
      currentPageNumber +=1;
    loadData(currentPageNumber);
    }
});
function loadData(currentPage){
  $.ajax({
      method: "get",
      url: "http://localhost:3000/users?_page="+currentPage +"&_limit=50",
      dataType: 'json',
      success: function(data) {
              for(var i=0;i<data.length;i++) {
                 $('#tbl tbody').append("<tr><td>"+ data[i].name+"</td><td>"+ 
                 data[i].email+"</td><td>" 
                 + data[i].city + "," + data[i].country+ "</td></tr>")
              }; 


      },
      error: function(data) {
              console.log("Something went wrong!");
      }
})
}
table {width:100%; border-collapse: collapse; }
td, th { border: 1px solid black; }
tr { background: #ccc; }
tr:nth-child(odd) { background: #eee; }
td > div { white-space: pre; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Infinite Scrolling</h1>

<table id="tbl">
  <thead>
    <tr>
      <td>Name</td>
      <td>Email Address</td>
      <td>Physical Address</td>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>

最佳答案

您可以根据扰乱和限制来限制数据库中的数据选择。 看看Retrieving data from inner join using LIMIT and OFFSET

loadData(currentPageNumber);scroll()第一次调用 loadData(currentPageNumber); 后发生事件,以便您的数据在第一次加载时加载,并在用户滚动到页面末尾时调用 loadData(currentPageNumber); .

$(document).ready(function() {
    var currentPageNumber = 1;
    loadData(currentPageNumber);
    
    
                    $(window).on("scroll", function () {
                        var scrollHeight = $(document).height();
                        var scrollPosition = $(window).height() + $(window).scrollTop();
                        if ((scrollHeight - scrollPosition) / scrollHeight === 0) {
                        currentPageNumber +=1;
                        	loadData(currentPageNumber);
                        }
                    });
    
    function loadData(currentPage){
        $.ajax({
            method: "get",
            url: "http://localhost:3000/users?_page="+currentPage,
            dataType: 'json',
            success: function(data) {
                    for(var i=0;i<data.length;i++) {
                       $('#tbl tbody').append("<tr><td>"+ data[i].name+"</td><td>"+ 
                       data[i].email+"</td><td>" 
                       + data[i].city + "," + data[i].country+ "</td></tr>")
                    }; 


            },
            error: function(data) {
                    console.log("Something went wrong!");
            }
    })
    }

})


<head>
    <title>Infinite Scroll Table</title>
    <style>

        table { border-collapse: collapse; }
        td, th { border: 1px solid black; }
        tr { background: #ccc; }
        tr:nth-child(odd) { background: #eee; }
        td > div { white-space: pre; }
    </style>

</head>
<body>
        <h1>Infinite Scrolling</h1>

        <table id="tbl">
                <thead>
                    <tr>

                                <td>Name</td>
                                <td>Email Address</td>
                                <td>Physical Address</td>


                    </tr>
                </thead>
                <tbody></tbody>
        </table>

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="table.js"></script>         
</body>

关于javascript - 如何修复无限滚动表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655765/

相关文章:

javascript - jquery 中的下拉值

jquery - 单击时显示消息

json - 使用 JSON 数据填充表

c# - 如果类具有 JsonExtensionData,如何使用 Json.NET 订购属性?

javascript - 为什么嵌套的 ng-grid 高度不起作用?

javascript - 面向对象的 javascript - "this"关键字和对象内的访问函数

javascript - JqueryMobile中的水平滚动和垂直滚动

json - 将JSON文件索引到elasticsearch命令/映射错误中

javascript - 我可以在 javascript .click 函数上启动一系列事件吗?

javascript - 更改多个元素的切换状态,并需要在页面刷新时保留在本地存储中