广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >怎么用smarty+php+ajax实现简单无刷新分页功能
  • 462
分享到

怎么用smarty+php+ajax实现简单无刷新分页功能

2024-04-02 19:04:59 462人浏览 安东尼
摘要

这篇文章主要介绍“怎么用smarty+PHP+ajax实现简单无刷新分页功能”,在日常操作中,相信很多人在怎么用smarty+php+ajax实现简单无刷新分页功能问题上存在疑惑,小编查阅了各式资料,整理出

这篇文章主要介绍“怎么用smarty+PHP+ajax实现简单无刷新分页功能”,在日常操作中,相信很多人在怎么用smarty+php+ajax实现简单无刷新分页功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用smarty+php+ajax实现简单无刷新分页功能”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    简介

    分页,无非就是从数据库中获得我们想查询的数据,再加以处理即可!

    ① 确定数据总数($count)

    ② 每页显示数据条数($pageSize)

    ③ 分多少页($pageCount)

    ④ 上一页($pagePrev)

    ⑤ 下一页($pageNext)

    ⑥ 判断越界问题

    ⑦ 偏移量($offset)

    ⑧ sql语句($sql = "select * from Goods limit $offset,$pageSize";)

    简单归简单,我们还得考虑实际的应用。例如:如果你正在土豆网看《火影忍者》,下面一个评论吸引了你,你点击“下一页”后整个页面都刷新,我勒个去,《火影忍者》也刷没了,只能再从头开始看,这样的情况是不是令你十分厌恶。再想想,如果当你点击“下一页”时,只有评论的部分刷新,你的视频根本没有受到影响,那是不是很完美呢!

    想要无刷新,第一个想到Ajax;前台都是html+js,后台php+smarty组合,那我们就直接进入主题:

    

    文件结构

    怎么用smarty+php+ajax实现简单无刷新分页功能

    ① Smarty模板文件 官网地址:Http://www.smarty.net/

    ② /templates     自定义的文件夹  page.htpl模板文件,用于存放分页数据及链接

    ③ page.html      前台显示页面   js触发

    ④ page.php       数据库处理   smarty数据处理

    ⑤ public.js      Ajax对象的封装

    

    程序流程

    ① 前端page.html传递page参数(不传递后台页面也会默认赋值)

        (前端主要的作用:显示、发出Ajax请求)

    ② php页面数据库操作,$sql分页语句查询出分页所需的数据

    ③ 载入smarty模板,将参数assign传递到page.htpl模板页

    ④ 模板页导入数据、遍历数据  将上、下页加入超链接及js事件

    ⑤ smarty fetch()方法读取模板页数据 赋值给变量  变量再响应给Ajax客户端

    ⑥ 前台接收

    代码

    page.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        <title>无刷新分页</title>
        <script language="javascript" src="public.js"></script>
        <script language="javascript">
        function display(page){
            $.get('page.php','page='+page,function(msg){
                $('content').innerHTML = msg;
            });
        }
        window.onload = function(){
            display(1);
        };
        </script>
    </head>
    
    <body>
        <div id="content"></div>
    </body>
</html>

    public.js

(function(){
    //1、用于得到一个DOM元素
    //定义了一个$函数 作用域有局部
    var $ = function(id){
        return document.getElementById(id);
    };
    
    //2、用于得到一个Ajax对象
    //将$看作函数对象,init为属性,值为函数体
    $.init = function(){
        try{return new XMLHttpRequest()}catch(e){} 
        try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){}
        alert('请更改新浏览器!');
    };
    //用于发送Ajax get请求
    $.get = function(url,data,callback,type){
        var xhr = $.init();
        if (data != null){//传递参数、只发出请求
            url = url+'?'+data;
        }
        xhr.open('get',url);
        xhr.setRequestHeader('If-Modified-Since','0');//解决get缓存问题
        xhr.onreadystatechange = function(){
            if (xhr.readyState == 4 && xhr.status == 200){
                //当没有指定传值类型时,默认为字符串
                if (type == null){
                    type = 'text';
                }
                //判断语句指定三种接收形式
                if (type == 'text'){
                    callback(xhr.responseText);
                }
                if (type == 'xml'){
                    callback(xhr.responseXML);
                }
                if (type == 'JSON'){
                    callback(eval("("+xhr.responseText+")"));
                }
            }
    };
    xhr.send(null);
    };
        //增大其作用域全局变量  window方法的$属性  赋值为$  闭包写法
        window.$ = $;
})();

    page.php

<?php
    Mysql_connect('localhost','root','111111');
    mysql_select_db('shop');
    mysql_query('set names gb2312');
    //为查询结果增加新字段 num
    $sql = "select * from sw_goods";
    $result = mysql_query($sql);
    $count = mysql_num_rows($result);//获得总行数,与mysql_num_rows()类似
    $page = isset($_GET['page'])?$_GET['page']:1;//获取当前页码,默认1
    $pageSize = 5;//页尺寸  每页显示多少条数据
    $pageCount = ceil($count/$pageSize);//计算总页面
    $pagePrev = $page - 1;//上一页页码
    $pageNext = $page + 1;//下一页页码
    if ($pagePrev < 1) $pagePrev = 1;  //判断页码越界
    if ($pageNext > $pageCount) $pageNext = $pageCount;
    if ($page < 1) $page = 1;   //判断当前页页码越界
    if ($page > $pageCount) $page = $pageCount;
    $offset = ($page -1)*$pageSize; //偏移量    
    //相对于当前页来讲的
    $sql = "select * from sw_goods limit $offset,$pageSize"; //order by id asc 默认/desc
    $result = mysql_query($sql);//查询那一页的结果集
    $num = mysql_num_rows($result);
    $data = array();
    for ($i=0;$i<$num;$i++){
    //遍历五次,每次获得一个数组array('good_id'=>'','goods_name'=>'','goods_price'=>'')
    //形成一个二维数组
    $data[] = mysql_fetch_assoc($result);
    }
    mysql_close();
    //***************************************************************************
    include('Smarty/Smarty.class.php');
    $smarty = new Smarty();
    $smarty -> assign('data',$data);
    $smarty -> assign('count',$count);
    $smarty -> assign('pageCount',$pageCount);
    $smarty -> assign('page',$page);
    $smarty -> assign('pagePrev',$pagePrev);
    $smarty -> assign('pageNext',$pageNext);
    $smarty -> assign('pageCount',$pageCount);
    $str = $smarty -> fetch('page.htpl');//获取模板里面的数据,赋值给变量,再传递给Ajax
    对象
    header("content-type:text/html;charset=gb2312");
    echo $str;

    page.htpl

<!--htpl是当作模板来用的扩展名-->
<!--分页模板-->
 <style type="text/CSS">
        *{
            margin:0px;
            padding:0px;
        }
        body{
            text-align:center;
        }
        table{
            width:650px;
            margin:0px auto;
            margin-top:20px;
        }
        tr{
            background-color:#ffffff;
            height:30px;
            font-size:12px;
        }
</style>
<table cellspacing="1" cellpadding="4" bGColor="#336699">
    <tr>
        <td>序号</td>
        <td>商品名称</td>
        <td>商品价格</td>
        <td>商品数量</td>
    </tr>
    {foreach from = $data item = 'value'}
    <tr>
        <td>{counter}</td>
        <td>{$value['goods_name']}</td>
        <td>{$value['goods_price']}</td>
        <td>{$value['goods_number']}</td>
    </tr>
    {/foreach}
    <tr>    
        <td colspan = '4'>
        共{$count}条数据
        共{$pageCount}页
        当前第{$page}页
        <a href="#" onclick="display(1)">首页</a>
        <a href="#" onclick="display({$pagePrev})">上一页</a>
        <a href="#" onclick="display({$pageNext})">下一页</a>
        <a href="#" onclick="display({$pageCount})">末页</a>
        </td>
    </tr>
</table>

    最后的分页效果:

    怎么用smarty+php+ajax实现简单无刷新分页功能

到此,关于“怎么用smarty+php+ajax实现简单无刷新分页功能”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么用smarty+php+ajax实现简单无刷新分页功能

本文链接: https://www.lsjlt.com/news/79553.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用smarty+php+ajax实现简单无刷新分页功能
    这篇文章主要介绍“怎么用smarty+php+ajax实现简单无刷新分页功能”,在日常操作中,相信很多人在怎么用smarty+php+ajax实现简单无刷新分页功能问题上存在疑惑,小编查阅了各式资料,整理出...
    99+
    2022-10-19
  • Ajax中怎么利用smarty实现无刷新分页功能
    这篇文章将为大家详细讲解有关Ajax中怎么利用smarty实现无刷新分页功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。类:  (function(){ ...
    99+
    2022-10-19
  • ajax中怎么实现无刷新分页功能
    本篇文章给大家分享的是有关ajax中怎么实现无刷新分页功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。html页<html> &...
    99+
    2022-10-19
  • 使用AJAX怎么实现无刷新分页功能
    使用AJAX怎么实现无刷新分页功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  首先讲一下原理:分页有两个要点:1.有多少页,2.每页有多...
    99+
    2022-10-19
  • 怎么用Flash和Ajax实现无刷新分页功能
    这篇文章主要讲解了“怎么用Flash和Ajax实现无刷新分页功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Flash和Ajax实现无刷新分页功能”...
    99+
    2022-10-19
  • Ajax中怎么实现页面无刷新功能
    Ajax中怎么实现页面无刷新功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ajax (ajax开发)AJAX即“Asynchronous ...
    99+
    2022-10-19
  • php中怎么利用ajax实现无刷新分页
    本篇文章为大家展示了php中怎么利用ajax实现无刷新分页,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。<php Header("Cont...
    99+
    2022-10-19
  • AJAX怎么实现无刷新登录功能
    这篇文章主要为大家展示了“AJAX怎么实现无刷新登录功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“AJAX怎么实现无刷新登录功能”这篇文章吧。最近学习了如何...
    99+
    2022-10-19
  • AJAX怎么实现无刷新搜索功能
    这篇文章主要介绍“AJAX怎么实现无刷新搜索功能”,在日常操作中,相信很多人在AJAX怎么实现无刷新搜索功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”AJAX怎么实现无刷...
    99+
    2022-10-19
  • 使用Ajax怎么实现一个无刷新分页
    本篇文章为大家展示了使用Ajax怎么实现一个无刷新分页,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。<!doctype html><html lang=&quo...
    99+
    2023-06-08
  • 怎么用ASP+Ajax实现无刷新评论功能
    本篇内容介绍了“怎么用ASP+Ajax实现无刷新评论功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&l...
    99+
    2022-10-19
  • 怎么用jQuery+php+ajax实现无刷新上传文件功能
    这篇文章主要讲解了“怎么用jQuery+php+ajax实现无刷新上传文件功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用jQuery+php+aj...
    99+
    2022-10-19
  • AJAX怎么实现博客无刷新搜索功能
    这篇文章主要讲解了“AJAX怎么实现博客无刷新搜索功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“AJAX怎么实现博客无刷新搜索功能”吧!搜索结果模板sa...
    99+
    2022-10-19
  • php中怎么利用ajax实现无刷新上传图片功能
    php中怎么利用ajax实现无刷新上传图片功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。<html> <bod...
    99+
    2022-10-19
  • 怎么用Thinkphp+Ajax实现带关键词搜索列表无刷新分页的功能
    这篇文章主要讲解了“怎么用Thinkphp+Ajax实现带关键词搜索列表无刷新分页的功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Thinkphp+Ajax实现带关键词搜索列表无刷...
    99+
    2023-06-04
  • 怎么用PHP+jPaginate插件实现无刷新分页
    本篇内容主要讲解“怎么用PHP+jPaginate插件实现无刷新分页”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用PHP+jPaginate插件实现无刷新...
    99+
    2022-10-19
  • 怎么用PHP+Ajax实现无刷新上传头像图片预览功能
    这篇文章主要讲解了“怎么用PHP+Ajax实现无刷新上传头像图片预览功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用PHP+Ajax实现无刷新上传头...
    99+
    2022-10-18
  • Ajax中怎么实现无刷新三联动下拉框功能
    Ajax中怎么实现无刷新三联动下拉框功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 <...
    99+
    2022-10-19
  • Ajax技术怎么实现WEB无刷新提交数据功能
    这篇文章主要介绍“Ajax技术怎么实现WEB无刷新提交数据功能”,在日常操作中,相信很多人在Ajax技术怎么实现WEB无刷新提交数据功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2022-10-19
  • pushState中怎么利用Ajax实现无刷新页面切换
    pushState中怎么利用Ajax实现无刷新页面切换,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、API1、pushSt...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作