首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP Ajax 無刷新分頁實作教學

     編輯:PHP 相關知識

前言

在現代 Web 開發中,無刷新分頁已成為提升使用者體驗的關鍵技術。本文將透過實際程式碼示範,說明如何結合 PHP 與 jQuery Ajax 實現資料的非同步分頁載入,避免傳統分頁每次都需重新整理頁面的缺點。

資料庫結構準備

首先建立一個簡單的訊息資料表,包含自動遞增的主鍵與訊息內容欄位:

CREATE TABLE messages (
    msg_id INT PRIMARY KEY AUTO_INCREMENT,
    message VARCHAR(150)
);

前端 JavaScript 實作

使用 jQuery 處理 Ajax 請求與畫面更新,核心邏輯包含載入動畫顯示/隱藏、資料請求函式、分頁點擊事件綁定:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
    // 載入動畫控制
    function loading_show() {
        $('#loading').html("<img src='images/loading.gif'/>").fadeIn('fast');
    }
    function loading_hide() {
        $('#loading').fadeOut();
    }

    // 核心資料載入函式
    function loadData(page) {
        loading_show();
        $.ajax({
            type: "POST",
            url: "load_data.php",
            data: "page=" + page,
            success: function(msg) {
                $("#container").ajaxComplete(function() {
                    loading_hide();
                    $("#container").html(msg);
                });
            }
        });
    }

    // 首次載入預設第一頁
    loadData(1);

    // 分頁連結點擊事件(使用 live 綁定動態產生的元素)
    $('#container .pagination li.active').live('click', function() {
        var page = $(this).attr('p');
        loadData(page);
    });
});
</script>

後端 PHP 處理 (load_data.php)

伺服器端接收頁碼參數,計算資料庫查詢的 LIMIT 範圍,並回傳 HTML 片段:

<?php
if (isset($_POST['page'])) {
    $page = intval($_POST['page']);
    $per_page = 15; // 每頁筆數
    $start = ($page - 1) * $per_page;

    include "db.php"; // 資料庫連線設定

    // 查詢當頁資料
    $query = "SELECT msg_id, message FROM messages LIMIT $start, $per_page";
    $result = mysql_query($query) or die('MySQL Error: ' . mysql_error());

    $msg = "";
    while ($row = mysql_fetch_array($result)) {
        $htmlmsg = htmlentities($row['message']); // 過濾 HTML 實體
        $msg .= "<li><b>" . $row['msg_id'] . "</b> " . $htmlmsg . "</li>";
    }
    $msg = "<div class='data'><ul>" . $msg . "</ul></div>";

    // 計算總頁數
    $count_query = "SELECT COUNT(*) AS count FROM messages";
    $count_result = mysql_query($count_query);
    $row = mysql_fetch_array($count_result);
    $total_records = $row['count'];
    $total_pages = ceil($total_records / $per_page);

    // 此處省略分頁導覽列生成程式碼(可參考完整下載檔案)
    // 輸出資料與分頁 HTML
    echo $msg . $pagination_html;
}
?>

關鍵技術重點

  • 非同步請求:使用 jQuery $.ajax 避免頁面重載
  • 載入狀態回饋:透過 loading 動畫提升使用者等待體驗
  • 動態事件綁定:使用 .live() 處理 Ajax 更新後新產生的分頁連結(註:jQuery 1.7+ 建議改用 .on())
  • 資料庫分頁查詢:善用 LIMIT 子句只取得所需資料,減少傳輸量

現代化改良建議

原始範例使用已棄用的 mysql_* 函式,實際專案建議改用 PDO 或 MySQLi,並採用預處理語句防止 SQL 注入。前端部分可升級至 jQuery 3.x,將 .live() 替換為 .on() 事件委派寫法,並考慮加入錯誤處理與 JSON 格式資料交換以利前後端分離架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved