【发布时间】:2022-06-11 04:20:58
【问题描述】:
我正在创建实时搜索和分页功能。我得到了搜索功能和 ajax 调用来响应,但是分页链接不会转到正确的页面或任何页面。我看了一些教程,但我似乎可以让它工作。
Ajax 脚本(主页面)
<script>
$(document).ready(function(){
load_data(1);
function load_data(page, query = '')
{
$.ajax({
url:'includes/fetchclinicians-inc.php',
method:"POST",
data:{page:page, query:query},
success:function(data){
$('#clincians').html(data);
console.log(data);}
});
};
$(document).on('click', '.pagination-pagelink', function(){
var page = $(this).attr('page_number');
var query = $('#search-name').val();
load_data(page, query);
});
$('#search-name').keyup(function(){
var query = $('#search-name').val();
load_data(1, query);
});
});
</script>
PHP 代码(查询和分页页面)
$mysqli = mysqli_connect('localhost', 'root', '',
'database');
$total_pages = $mysqli->query('SELECT COUNT(*) FROM clinicians')->fetch_row()[0];
$search_total = $mysqli->query('SELECT * FROM clinicians WHERE ClinicianName LIKE "%'.str_replace(' ', '%', $_REQUEST['query']).'%"');
if(isset($_POST['page']))
{
$page = $_POST['page'];
}else{
$page = 1;
}
$limit = '6';
if ($stmt = $mysqli->prepare('SELECT * FROM database WHERE
ClinicianName LIKE "%'.str_replace(' ', '%',
$_REQUEST['query']).'%" ORDER BY ClinicianExtension
LIMIT ?,?')) {
// Calculate the page to get the results we need from our
table.
$calc_page = ($page - 1) * $limit;
$stmt->bind_param('ii', $calc_page, $limit);
$stmt->execute();
// Get the results...
$result = $stmt->get_result();
$stmt->close();
}
$clinician_data = $result->fetch_assoc();
$clinician_count = $result->num_rows;
$total_links = ceil($total_pages/$limit);
$previous_link = '';
$next_link = '';
$page_link = '';
if($total_links > 5)
{
if($page < 6)
{
for($count = 1; $count <= 6; $count++)
{
$page_array[] = $count;
}
$page_array[] = '...';
$page_array[] = $total_links;
}
else
{
$end_limit = $total_links - 6;
if(isset($page) > $end_limit)
{
$page_array[] = 1;
$page_array[] = '...';
for($count = $end_limit; $count <= $total_links; $count++)
{
$page_array[] = $count;
}
}
else
{
$page_array[] = 1;
$page_array[] = '...';
for($count = $page - 1; $count <= $page + 1; $count++)
{
$page_array[] = $count;
}
$page_array[] = '...';
$page_array[] = $total_links;
}
}
}
else
{
for($count = 1; $count < $total_links; $count++)
{
$page_array[] = $count;
}
}
if(!$clinician_data == 0) {
for($count = 0; $count < count($page_array); $count++)
{
if($page == $page_array[$count])
{
$page_link .= '
<div>
<a class="pagination-pagelink cc-
current">'.$page_array[$count].'</a>
</div>
';
$previous_id = $page_array[$count] - 1;
if($previous_id > 0)
{
$previous_link = '<div class="pagination-pagelink">
<a class="pagination-buttonleft w-inline-block"
href="javascript:void(0)" data-
page_number="'.$previous_id.'">
<div class="pagination-arrow">❮</div>
</a>
</div>';
}
else
{
$previous_link = '<div class="pagination-pagelink">
<a class="pagination-buttonleft w-inline-block">
<div class="pagination-arrow">❮</div>
</a>
</div>
';
}
$next_id = $page_array[$count] + 1;
if($next_id > $total_links)
{
$next_link = '<div class="pagination-pagelink">
<a class="pagination-buttonright w-inline-block">
<div class="pagination-arrow">❯</div>
</a>
</div>
';
}
else
{
$next_link = '<div class="pagination-pagelink">
<a class="pagination-buttonright w-inline-block"
href="javascript:void(0)" data-page_number='".$next_id.'">
<div class="pagination-arrow">❯</div>
</a>
</div>';
}
}
else
{
if($page_array[$count] == '...')
{
$page_link .= '
<div>
<a class="pagination-pagelink">...</a>
</div>
';
}
else
{
$page_link .= '<div>
<a class="pagination-pagelink" href="javascript:void(0)"
data page_number=
'.$page_array[$count].'>'.$page_array[$count].'</a>
</div>
';
}
}
}
}
$pagoutput = '<div class="list-pagination">
<div list-style="none" class="pagination-container">
';
$pagoutput .= $previous_link . $page_link . $next_link;
$pagoutput .= '
</div>
</div>
<div class="countbox">
<strong class="countlabel">
Total Clinicians Found - '.$clinician_count.'
</strong>
</div>
';
echo $output;
echo $pagoutput;
【问题讨论】:
-
$_GET['page']永远不会设置,因为您在 Ajax 请求中使用 POST。将method: "POST"更改为method: "GET"并重试。 -
还是不行。我想我之前试过了,但我又试了一次,没有运气。
-
您需要进行一些调试以缩小问题范围。检查浏览器开发工具中的控制台,看看是否有任何 JS 错误。如果没有,请检查开发工具中的网络选项卡,查看您的 ajax 实际发送的内容以及返回的内容。
标签: php ajax pagination