无刷新分页技术,Ajax+smarty

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无刷新分页技术,Ajax+smarty相关的知识,希望对你有一定的参考价值。

这里运用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模板

这就实现了一个简单的分页技术

以上是关于无刷新分页技术,Ajax+smarty的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 带有gridview的分页无刷新,急求,使用ajax

G. 案例Ajax实现无刷新分页效果

Ajax实现无刷新分页

通过Ajax实现无刷新分页

在php里面用ajax怎么做分页

ajax无刷新分页