You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP/AJAX分页故障:点击第2页及以后无结果显示

Hey there! Let's troubleshoot why your pagination beyond page 1 isn't loading content in your computadores.php setup. No dev tool errors make this a bit sneaky, but let's walk through the most common culprits step by step:

1. Pagination parameters aren't being passed correctly in AJAX requests

It’s super common to hardcode page=1 for the initial load, but forget to update that value when clicking subsequent pages. Double-check:

  • When a pagination link is clicked, are you capturing the correct page number (e.g., from a data-page attribute or the link’s href)?
  • Is that page number being included in your AJAX request’s data (either as a URL query parameter or in the request body)?

Example fix with jQuery:

// Use event delegation if pagination links are loaded dynamically
$('#results-wrapper').on('click', '.pagination-link', function(e) {
  e.preventDefault();
  const selectedPage = $(this).data('page'); // Grab the clicked page number
  const activeTags = getSelectedTags(); // Your function to get chosen tags

  $.ajax({
    url: 'computadores.php',
    method: 'GET',
    data: {
      page: selectedPage, // Critical: pass the dynamic page number
      tags: activeTags
    },
    success: function(response) {
      $('#results-container').html(response); // Replace results with new content
    }
  });
});

2. Backend isn’t using the page parameter correctly

Even if the frontend sends the right page number, your PHP code might be miscalculating the query offset or ignoring the parameter entirely. Verify:

  • You’re correctly fetching the page parameter (and sanitizing it to avoid SQL injection):
    $currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
    $itemsPerPage = 10; // Adjust to your per-page count
    $offset = ($currentPage - 1) * $itemsPerPage; // Key formula: page 2 = offset 10, not 2
    
  • Your SQL query includes the correct LIMIT and OFFSET clauses, and you’re passing the selected tags alongside the pagination logic:
    $sql = "SELECT * FROM computadores WHERE tags IN (:selected_tags) LIMIT :limit OFFSET :offset";
    

3. Browser caching is serving stale page 1 content

GET requests can be cached by browsers, so clicking page 2 might actually return the cached page 1 response. Fix this by:

  • Adding cache: false to your AJAX options (if using jQuery)
  • Appending a unique timestamp to the request URL to bypass caching:
    url: `computadores.php?timestamp=${new Date().getTime()}`
    

If your pagination links are loaded via AJAX (instead of being present on the initial page load), your original click event listeners won’t attach to the new links. Use event delegation to fix this—bind the click event to a parent element that exists on page load, like:

// Bind to a persistent parent container, not the dynamic links themselves
$('#results-container').on('click', '.pagination-link', function(e) {
  // Your pagination logic here
});

5. Backend returns empty content for pages >1

Test your backend directly by visiting the URL with the page parameter and selected tags in your browser, e.g.:
computadores.php?page=2&tags=laptop,gaming
If this returns empty HTML, your backend query isn’t filtering correctly for the combination of tags and page offset. Double-check that your tag filters are being applied alongside the pagination logic in your SQL query.

Start with these checks—they cover 90% of pagination issues with AJAX-driven results!

内容的提问来源于stack exchange,提问作者user7298892

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:02:46