無刷新分頁技術,Ajax+smarty

来源:http://www.cnblogs.com/houhaidong/archive/2016/03/10/5263767.html
-Advertisement-
Play Games

這裡運用Smarty模板,更簡單 本文主要的技術:AJAX,PHP,Smarty,另外自己封裝了一個很簡單的類 類: (function(){ function $(id) { return document.getElementById(id); } $.init=function() { try


這裡運用Smarty模板,更簡單

本文主要的技術:AJAX,PHP,Smarty,另外自己封裝了一個很簡單的類

類:

  (function(){
    function $(id) {
        return document.getElementById(id);
    }
    $.init=function() {
        try{return new XMLHttpRequest();}catch(e){};
        try{return new ActiveXObject('Microsoft.XMLHTTP');}catch(e){}
        alert('請更換瀏覽器');
    }
    $.get=function (url,data,callback,type) {
        var xhr = this.init();
        url += '?' +new Date().getTime();
        if(data!=null){
            url += '&'+data;
        }
        xhr.open('get',url);
        xhr.onreadystatechange = function () {
            if(xhr.readyState == 4 && xhr.status == 200){
                if(type==null){
                    callback(xhr.responseText);
                }
                if(type == 'text'){
                    callback(xhr.responseText);
                }
                if(type == 'xml'){
                    callback(xhr.responseXML);
                }
                if(type == 'json'){
                    callback(eval("("+xhr.responseText+")"));
                }
            }
        }
        xhr.send(null);
    }

$.post = function (url,data,callback,type) {
        var xhr = this.init();
        xhr.open('post',url);
        xhr.setRequestHeader('Content-Type','Application/x-www-form-urlencoded');
        xhr.onreadystatechange = function () {
            if(xhr.readyState == 4 && xhr.status == 200){
                if(type==null){
                    callback(xhr.responseText);
                }
                if(type == 'text'){
                    callback(xhr.responseText);
                }
                if(type == 'xml'){
                    callback(xhr.responseXML);
                }
                if(type == 'json'){
                    callback(eval("("+xhr.responseText+")"));
                }
            }
        };
        xhr.send(data);
    }

 類很簡單,不介紹了

HTML:

  window.onload=function () {
        init(2);
    }
    function del(id,p){
        $.get('del.php','id='+id,function(msg){
                if(msg==1){
                    init(p);
                }
        })
    }
    function init(p) {
        $.get('page.php','page='+p,function(msg){
            $('result').innerHTML=msg;
        });
    }

 

PHP:

<?php
header('content-type:text/html;charset=utf-8');
mysql_connect('localhost','root','root');
mysql_select_db('db2');
mysql_query('set names utf8');
$re=mysql_query('select count(*) as num from catgory');
$hang=mysql_fetch_assoc($re);
$row1=$hang['num'];
$page=isset($_GET['page'])? $_GET['page']:1;
$pagesize=2;
$total=ceil($row1/$pagesize);
$prev=$page-1;
$next=$page+1;
if($prev<1){$prev=1;}
if($next>$total){$next=$total;}
$offset = ($page-1)*$pagesize;
$result=mysql_query("select * from catgory limit ".$offset.','.$pagesize);
$ct=mysql_num_rows($result);
$data=array();
for($i=0;$i<$ct;$i++){
    $r=mysql_fetch_assoc($result);
    $data[]=$r;
}
include('libs/Smarty.class.php');
$Smarty=new Smarty();
$Smarty->assign('data',$data);
$Smarty->assign('page',$page);
$Smarty->assign('pagesize',$pagesize);
$Smarty->assign('total',$total);
$Smarty->assign('prev',$prev);
$Smarty->assign('next',$next);
$Smarty->assign('row1',$row1);
$str=$Smarty->fetch('page.html');
echo $str;

Smarty:

       <table border="1" rules="all" width="600">
        <tr>
            <td>編號</td>
            <td>品牌</td>
            <td>pid</td>
            <td>刪除</td>
        </tr>
        {foreach from=$data item='value'}
        <tr>
            <td>{$value['id']}</td>
            <td>{$value['name']}</td>
            <td>{$value['pid']}</td>
            <td><a href="#", onclick="del({$value['id']},{$page})">刪除</td>
        </tr>
        {/foreach}
        <tr>
            <td colspan="3">
                共{$total}頁
                第{$page}頁
                <a href="#", onclick="init({$prev})">上一頁</a>
                <a href="#", onclick="init({$next})">下一頁</a>
                <a href="#", onclick="init(1)">第一頁</a>
                <a href="#", onclick="init({$total})">最末頁</a>
                共{$row1}條數據
                每頁{$pagesize}條數據
            </td>
        </tr>
    </table>

要引入smary模板

這就實現了一個簡單的分頁技術


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本節目錄 介紹 定義Filter 設置Filter 這是Abp中多租戶、軟刪除、激活\禁用等如此方便的原因 Install-Package EntityFramework.DynamicFilters 定義數據 class DemoDb : DbContext { public DemoDb() :
  • 在做h5移動頁面,相信大家一定碰到過頁面已經打開,但是裡面的圖片還未載入出來的情況,這種問題雖然不影響頁面的功能,但是對於不利於用戶體驗。拋開網速的原因,解決這個問題有多方面的思路:最基本的,要從http請求合併,緩存管理,圖片壓縮等方面做性能優化;另外就是可以對頁面里用到的所有圖片做預載入的處理。
  • 數組的5個迭代方法: every(); //對數組中的每一項運行給定函數,如果該函數對每一項都返回true,則返回true; filter(); //對數組中的每一項運行給定函數,返回該函數會返回true的項組成的數組; forEach(); //對數組中的每一項運行給定函數,這個方法沒有返回值;
  • 閑來無聊,收集總結一下jQuery常用操作,希望對新手有用。 基於jquery 1.3.2 <!--<script type="text/javascript" src="jquery/jquery-1.3.2.js"></script>--><!--<script src="https://aja
  • web語義化是什麼 HTML5標準出來的時候,我曾經詫異為什麼要定義這麼多header footer nav article標準,DIV不挻好的嘛,方便開發人員記憶啊。但當頁面開發完,面對所有都是DIV標簽的網頁,就會混亂了,到底哪裡是頁頭,哪裡是正文。當然我們可以用瀏覽器打開,F12一下,就一目了
  • 寫Web頁面就像我們建設房子一樣,地基牢固,房子才不會倒。同樣的,我們製作Web頁面也一樣,一個良好的HTML結構是製作一個美麗的網站的開始,同樣的,良好的CSS只存在同樣良好的HTML中,所以一個乾凈的,語義的HTML的優點很多,那麼平時製作中,我們做到了這一點嗎?我們一起來看一張圖片: 上圖展示
  • 最近開始找工作,本人蘇州,面了幾家都沒有結果很是傷心。在拉勾上按照城市蘇州關鍵字.NET來搜索一共才80來個職位,再用薪水一過濾,基本上沒幾個能投了。再加上最近蘇州的房價蹭蹭的長,房貸壓力也是非常大,所以有點想往上海去發展。閑來無聊寫了個小爬蟲,爬了下蘇州跟上海的.NET職位的信息,然後簡單對比了一
  • 做項目的時候發現正常的代碼在360瀏覽器上樣式都是亂的,翻閱資料才發現360是雙核,分為極速模式和相容模式,極速模式是用webkit內核,相容模式是用trident內核(也就是IE內核),最後加了一行代碼就完美解決了 <meta name="renderer" content = "webkit"/
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...