【问题标题】:AJAX Pagination Next/Previous Links Not workingAJAX 分页下一个/上一个链接不起作用
【发布时间】: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


猜你喜欢
  • 2017-08-01
  • 2013-04-24
  • 2013-08-26
  • 2014-09-26
  • 2017-07-17
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多