[英]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.