jQuery入門(七)jQuery實現按鈕分頁

努力--坚持發表於2024-09-01

一、分頁案例分析
功能分析:使用分頁外掛,實現分頁,效果如下圖:

二、實現思路和程式碼
2.1)頁面實現分析
1.引入分頁外掛的樣式檔案和 js 檔案。
2. 定義當前頁碼和每頁顯示的條數。(分頁必備資訊)
3. 呼叫查詢資料的函式。
4. 定義請求查詢分頁資料的函式,發起 AJAX 非同步請求。
5. 為分頁按鈕區域設定頁數引數(總頁數和當前頁)。(設定分頁外掛引數,展示分頁條)
6. 為分頁按鈕繫結單擊事件,完成上一頁下一頁查詢功能。(設定分頁外掛,繫結事件)

頁面程式碼實現:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>網站首頁</title>
    <link rel="stylesheet" href="css/tt.css">
    <link rel="stylesheet" href="css/simplePagination.css">
</head>
<body>
<div class="top">
    <span class="top-left">下載APP</span>
    <span class="top-left"> 北京         晴天</span>
    <span class="top-right">更多產品</span>
</div>
 
<div class="container">
 
    <div class="left">
        <a>
            <!--<img src="img/logo.png"><br/>-->
        </a>
 
        <ul>
            <li>
                <a class="channel-item active" href="#">
                    <span>
                        推薦
                    </span>
                </a>
            </li>
 
            <li><a class="channel-item" href="#">
                <span>
                    影片
                </span>
            </a></li>
 
            <li><a class="channel-item" href="#">
                <span>
                    熱點
                </span>
            </a></li>
 
            <li><a class="channel-item" href="#">
                <span>
                    直播
                </span>
            </a></li>
 
            <li><a class="channel-item" href="#">
                <span>
                    圖片
                </span>
            </a></li>
 
            <li><a class="channel-item" href="#">
                <span>
                    娛樂
                </span>
            </a></li>
 
            <li><a class="channel-item" href="#">
                <span>
                    遊戲
                </span>
            </a></li>
 
            <li><a class="channel-item" href="#">
                <span>
                    體育
                </span>
            </a></li>
        </ul>
 
    </div>
    <div class="center">
       <ul class="news_list">
          
        </ul>
 
 
        <div class="content">
            <div class="pagination-holder clearfix">
                <div id="light-pagination" class="pagination"></div>
            </div>
        </div>
 
    </div>
</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script src="js/jquery.simplePagination.js"></script>
<script>
    //1.定義當前頁碼和每頁顯示的條數 (分頁必備資訊)
    let start = 1;
    let pageSize = 10;
 
    //2.呼叫查詢資料的方法
    queryByPage(start,pageSize);
    
 
    //3.定義請求查詢分頁資料的函式,發起AJAX非同步請求,將資料顯示到頁面
    function queryByPage(start,pageSize) {
 
        $.ajax({
            //請求的資源路徑
            url:"newsServlet2",
            //請求的引數
            data:{"start":start,"pageSize":pageSize},
            //請求的方式
            type:"POST",
            //響應資料形式
            dataType:"json",
            //請求成功後的回撥函式
            success:function (pageInfo) {
                //將資料顯示到頁面
                let titles = "";
                for(let i = 0; i < pageInfo.list.length; i++) {
                    titles += "<li>\n" +
                        "                <div class=\"title-box\">\n" +
                        "                    <a href=\"#\" class=\"link\">\n" +
                                                pageInfo.list[i].title +
                        "                        <hr>\n" +
                        "                    </a>\n" +
                        "                </div>\n" +
                        "            </li>";
                }
                $(".news_list").html(titles);
 
                //4.為分頁按鈕區域設定頁數引數(總頁數和當前頁)
                $("#light-pagination").pagination({
                      pages:pageInfo.pages,
                      currentPage:pageInfo.pageNum
 
                });
 
                //5.為分頁按鈕繫結單擊事件,完成上一頁下一頁查詢功能(設定分頁外掛引數,展示分頁條)
                $("#light-pagination .page-link").click(function () {
                    //獲取點選按鈕的文字內容
                    let page = $(this).html();
                    //如果點選的是Prev,呼叫查詢方法,查詢當前頁的上一頁資料
                    if(page == "Prev") {
                        queryByPage(pageInfo.pageNum - 1,pageSize);
                    }else if (page == "Next") {
                        //如果點選的是Next,呼叫查詢方法,查詢當前頁的下一頁資料(設定分頁外掛,繫結事件)
                        queryByPage(pageInfo.pageNum + 1,pageSize);
                    } else {
                        //呼叫查詢方法,查詢當前頁的資料
                        queryByPage(page,pageSize);
                    }
                });
            }
        });
    }
 
</script>
</html>

2.2) 伺服器實現分析
1. 獲取請求引數。(當前頁碼和每頁條數)
2. 根據當前頁碼和每頁顯示的條數,呼叫業務層的方法,得到分頁 Page 物件
3. 封裝 PageInfo 物件。
4. 將得到的資料轉為 json。
5. 將資料響應給客戶端。

伺服器程式碼實現:

public class NewsServlet2 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //設定請求和響應的編碼
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");
 
        //1.獲取請求引數(當前頁碼和每頁條數)
        String start = req.getParameter("start");
        String pageSize = req.getParameter("pageSize");
 
        //2.根據當前頁碼和每頁顯示的條數來呼叫業務層的查詢方法,得到分頁Page物件
        NewsService service = new NewsServiceImpl();
        Page page = service.pageQuery(Integer.parseInt(start), Integer.parseInt(pageSize));
 
        //3.封裝PageInfo物件
        PageInfo<List<News>> info = new PageInfo<>(page);
 
        //4.將得到的資料轉為JSON
        String json = new ObjectMapper().writeValueAsString(info);
 
        //5.將資料響應給客戶端
        resp.getWriter().write(json);
 
    }
 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }
}


成功實現。

相關文章