本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于php原生上拉加載以及點(diǎn)擊加載更多的實(shí)現(xiàn)方法(代碼示例),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。
設(shè)計(jì)目的:
一個(gè)網(wǎng)站的數(shù)據(jù)非常多的時(shí)候,需要分頁(yè),方便瀏覽,為了方便翻頁(yè),那么我們摒棄傳統(tǒng)的點(diǎn)擊翻頁(yè),直接往下拉,不停地自動(dòng)加載數(shù)據(jù),這樣就可以方便閱讀。
設(shè)計(jì)原理:
通過(guò)ajax向后端接口發(fā)起翻頁(yè)請(qǐng)求,發(fā)送頁(yè)碼,后端接收頁(yè)碼,返回json數(shù)據(jù),前端jquery解析json并且拼接在原有的數(shù)據(jù)基礎(chǔ)上!
代碼:index.html
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0,viewport-fit=cover">
- <meta name="apple-mobile-web-app-capable" content="yes">
- <meta name="apple-mobile-web-app-status-bar-style" content="black">
- <meta name="format-detection" content="telephone=no">
- <title>jquery+ajax上拉加載更多</title>
- <style>
- *{margin:0;padding: 0;}
- #text p{
- width: 80%;
- padding: 5px 5px;
- background: #eee;
- margin:5px auto;
- }
- #loadmore{
- width: 120px;
- background: #eee;
- height: 45px;
- border-radius: 100px;
- margin:20px auto;
- line-height: 45px;
- text-align: center;
- cursor: pointer;
- }
- #loading{
- text-align: center;
- }
- </style>
- </head>
- <body>
- <h3 id="loading"></h3>
- <div id="text"></div>
- <div id="loadmore">點(diǎn)擊加載更多</div>
- </body>
- </html>
- <!--引入jquery庫(kù)-->
- <script type="text/javascript" src="http://www.yilingsj.com/skin/yilingsj/js/jquery-1.8.3.min.js"></script>
- <script>
- // 定義一個(gè)變量,等會(huì)用來(lái)控制多次觸發(fā)
- var i=0;
- $(window).scroll(function(){
- //獲取滾動(dòng)時(shí)距離瀏覽器頂部的值
- var t=$(this).scrollTop();
- //獲取當(dāng)前窗口的高度
- var h=$(this).height();
- //獲取按鈕距離瀏覽器頂部的值
- var h1=$('#loadmore').offset().top;
- //用按鈕的值-滾動(dòng)條的值與窗口高度進(jìn)行比較,如果小時(shí),則表示按鈕進(jìn)入可視區(qū),同時(shí)也表示滾動(dòng)條即將到達(dá)底部
- if(h1-t<h){
- //防止快速下拉時(shí)多次觸發(fā)
- if(i==0){
- //改變i的值
- i=1;
- //觸發(fā)點(diǎn)擊事件
- $('#loadmore').click();
- }
- }
- });
- // 加載初始數(shù)據(jù)
- var p = 1;
- $.ajax({
- type:"get",
- url:'server.php?page=' + p,
- data:{},
- dataType:"json",
- success:function(data){
- for (var a in data){
- $('#text').append("<p>"+data[a].resname+"</p>");
- $("#loading").remove();
- }
- i=0;
- },
- error:function(data){
- },
- beforeSend:function(data){
- $('#loading').append("加載中");
- }
- });
- // 加載更多
- $('#loadmore').click(function(){
- p++;
- $.ajax({
- type:"get",
- url:'server.php?page=' + p,
- data:{},
- dataType:"json",
- success:function(data){
- for (var a in data){
- $('#text').append("<p>"+data[a].resname+"</p>");
- $("#loading").remove();
- }
- i=0;
- },
- error:function(data){
- $('#text').append("<p>"+服務(wù)器錯(cuò)誤+"</p>");
- },
- beforeSend:function(data){
- $('#loading').append("加載中");
- }
- });
- });
- </script>
server.php
- <?php
- header("Content-type:application/json");
- header('Access-Control-Allow-Origin:*');
- // 連接數(shù)據(jù)庫(kù)
- $con = mysql_connect("數(shù)據(jù)庫(kù)地址","數(shù)據(jù)庫(kù)賬號(hào)","數(shù)據(jù)庫(kù)密碼");
- if (!$con){die('Could not connect: ' . mysql_error());}
- mysql_select_db("數(shù)據(jù)庫(kù)名", $con);
- mysql_query("SET NAMES UTF8");
- // 每頁(yè)顯示條數(shù)
- $pageLine = 5;
- // 計(jì)算總記錄數(shù)
- $ZongPage = mysql_query("select count(*) from 表名");
- // 計(jì)算總頁(yè)數(shù)
- $sum = mysql_fetch_row($ZongPage);
- $pageCount = ceil($sum[0]/$pageLine);
- // 定義頁(yè)碼變量
- @$tmp = $_GET['page'];
- // 計(jì)算分頁(yè)起始值
- $num = ($tmp - 1) * $pageLine;
- // 查詢語(yǔ)句
- $result = mysql_query("SELECT 字段 FROM 表名 ORDER BY id DESC LIMIT " . $num . ",$pageLine");
- //遍歷輸出
- $results = array();
- while ($row = mysql_fetch_assoc($result)) {
- $results[] = $row;
- }
- echo json_encode($results);
- //分頁(yè)按鈕
- //上一頁(yè)
- $lastpage = $tmp-1;
- //下一頁(yè)
- $nextpage = $tmp+1;
- //防止翻過(guò)界
- if (@$tmp > $pageCount) {
- echo "[{/"result/":/"沒(méi)有了/"}]";
- }
- // 關(guān)閉數(shù)據(jù)庫(kù)連接
- mysql_close($con);
- ?>
以上就是php原生上拉加載以及點(diǎn)擊加載更多的實(shí)現(xiàn)方法(代碼示例)的詳細(xì)內(nèi)容。
新聞熱點(diǎn)
疑難解答