繁体   English   中英

用JQuery分页,PHP无法正常工作

[英]Pagination with JQuery, PHP not working

问题:当我点击分页链接时,脚本正在生成新的html表内容,但它没有在浏览器中刷新表。

我有类用户的方法叫做showUsers($limit, $offset) ,它获取我需要的所有数据并将其显示在表中。

  <table id="table" class="table table-striped table-bordered table-hover table-sm">
    <thead class="thead-default">
      <tr>
        <th>#</th>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Nickname</th>
        <th>User ID</th>
      </tr>
    </thead>
    <?php $user->showUsers($limit, $offset); ?>
  </table>

这是我的偏移变量: $offset = ($page - 1) * $limit$page是按下的分页链接的编号。

这就是我生成分页链接的方式:

  <div class="col-sm-9 mx-auto">
    <?php
      for ($i=1; $i <= $allPages ; $i++) {
        echo "<span class='pag-link' id='$i' style='cursor: pointer; padding: 6px; border: 1px solid #ccc; margin: 3px;'>". $i. "</span>";
      } 
    ?>
  </div>

这是我的JS脚本:

    //pagination-link handler.
    $('.pag-link').click(function(){
      var page = $(this).attr("id");
      console.log(page);
      $.ajax({
         type: "POST",
         url: "info.php",
         data: {page: page},
         success: function(data){
             console.log(data); // show response from the php script.
         }
       });
   });
   setInterval(function(){ $(`#table`).load('info.php #table'); }, 1000);

注意: setInterval(function(){ $("#table").load('info.php #table'); }, 1000); 应该在表中获取HTML并使用新表在浏览器中更新表。

所以,当我点击一个页面时,该号码将在info.php文件中发送。 这会更改我的$offset变量, showUsers($limit, $offset)方法将生成包含不同数据的新表。
现在这是有效的,因为我看到了在javascript控制台中生成的所有新HTML,但是setInterval(function(){ $("#table").load('info.php #table'); }, 1000); 不工作,我的表不更新。

注意:我想在间隔中刷新表,因为如果多个用户输入数据,我希望它实时更新到每个人。

.load('info.php #table')没有page参数。

所以你加载页面(“info.php”),点击下一个分页链接(url:“info.php”,数据:{page:page}),这样可行,但是计时器再次加载info.php,替换数据。

这将需要移动“var page;” 在函数调用之外的Javascript顶部:

    //pagination-link handler.
    var page=1;
    $('.pag-link').click(function(){
      page = $(this).attr("id");
      console.log(page);
      $.ajax({
         type: "POST",
         url: "info.php",
         data: {page: page},
         success: function(data){
             console.log(data); // show response from the php script.
         }
       });
   });
   setInterval(function(){ $(`#table`).load('info.php?page='+page+'#table'); }, 1000);

填充$ offset的PHP将需要响应GET和POST,例如$ _REQUEST。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM