设为首页 收藏本站
查看: 1124|回复: 0

[经验分享] Ajax翻页效果--《征服Ajax》的例子--php版

[复制链接]

尚未签到

发表于 2015-8-26 09:25:04 | 显示全部楼层 |阅读模式
  最近在看《征服Ajax》这本书,里面的例子后台都是用.net的,但是我自己不懂.net,就php会一点,所以决定把看过的例子后台用php重新写好了。。这个是里面的第一个例子,第12章 服务器端编程里的例子,比较简单。
  1.系统描述
  现在假设要进行翻页的是一个留言版的所有留言,结果中仅显示标题,并提供按标题进行关键字查询的功能。数据库是page_turning,留言表info,有四个字段,id,title,content,date。
  现在要实现的功能包括:                  
  a:使用ajax异步获取某页数据,从而实现无刷新显示。
  b:提供查询功能,并能够对查询结果同样有分页效果。  
  
  2.客户端设计
  a:页面结构
  界面由两个部分构成,一个是查询用的表单,一个是用于显示结果的表格结构,如图:   
  

DSC0000.gif
         


DSC0001.gif DSC0002.gif Code
<form name='form1'>
  <label for='title'>标题关键字:</label>
  <input type='text' id='title' name='title'/>
  <input type='button' value='查询' onclick='getPage(1)'/>
  <span id='tip'>正在加载中.</span>
</form>
<div id='content'>
</div>  这段代码中,form1用于让用户输入关键字进行查询,表单中<span>标记用于提示用户正在和服务器通信,查询按钮的单击事件被设置为"getPage(1)",即获取第一页的数据。
  b:设计Ajax逻辑
  Ajax逻辑的目的在于向服务器端发起异步请求,并将请求的结果显示于页面,由服务器端直接生成表格形式的留言列表,在客户端仅需要将其直接加入到内容容器(<div id='content'>);   
  代码:
  

Code
  var content = document.getElementById('content');
  var tip = document.getElementById('tip');
  function getPage(page)
  {
   
      var key = document.forms.form1.title.value;
      if(key != '')
      {
          tip.style.display = 'inline';
                  //将请求发送到后台,connection函数的作用是发送ajax请求,show函数作为回调函数,内容以text的方式返回
          connection('show.php?&page='+page+'&key='+key,show,'Text');
      }
      else alert('You should enter a key before searching');
  }

  function show(text)
  {
      content.innerHTML = '';
      tip.style.display = 'none';
      content.innerHTML = text;

  }

  function showContent(id)
  {
      window.open("showContent.php?&id="+id);
  }

  
  这段代码里,getPage(page)函数,把key和需要的第几页传递到后台去查询,查询结束后返回,在show函数里处理,即show函数里把传回来的结果显示在div中。
  showContent(id)函数,根据留言的id,显示留言的内容。  
  3.服务器端设计
  页面是show.php,它接受从客户端传过来的key,page参数,根据关键字和需要显示的页码,来决定要显示的留言信息。如果显示的不是第一页,在最下面的显示页码的一栏里没有第一页这一项,否则有,如果显示的不是最后一页,在最下面的显示页码的一栏里没有下一页这一项。
  具体内容:
  



Code
<?php
$pageSize = 10;
$key = $_GET['key'];        //关键字
$page = $_GET['page'];        //第几页

include 'http://www.cnblogs.com/../conn_forphp/conn.php';  //连接数据库的文件
mysql_select_db("page_turning") or die("Could not select database");

$query = "select * from info where title like '%$key%'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());

$counts = mysql_num_rows($result);        //一共搜索到多少条记录

$pageNum = floor($counts/$pageSize)+1;  //一共有多少页

$strHTML = '';    //要插入的html语句
$strHTML .= "<table></tbody>";
if($counts >= 0)
{
    $numInfront = $pageSize * ($page-1);
    $query1 = "select * from info  where title like '%$key%' limit $numInfront,$pageSize";
    $result1 = mysql_query($query1) or die("Query failed:".mysql_error());
    $counts1 = mysql_num_rows($result1);
    $strHTML .= "<tr><td class='title'>标题</td><td class='modifyDate'>修改时间</td></tr>";
    while($item = mysql_fetch_row($result1))
    {
        $strHTML .= "<tr><td class='title' onclick='javascript:showContent($item[0])'>$item[1]</td><td class='modifyDate' >$item[3]</td></tr>";
        
    }
   
    $strHTML .= "</tbody></table>";

    $strHTML .= '<br>';
   
    if($page != 1)
    {
        $strHTML .= "<a href='javascript:getPage(1)' title = '第1页'>第一页</a>";
    }
    for($i=1; $i<=$pageNum; $i++)
    {
        $strHTML .= "<a href='javascript:getPage(".$i.")' title = '第$i页'>[$i]</a>";

    }
    if($page != $pageNum)
    {
        $strHTML .= "<a href='javascript:getPage(".($page+1).")' title = 第'$page+1'页>下一页</a>";
    }
    echo $strHTML;

}
mysql_close();
?>
  
  下面是封装好的connection函数
  

Code
        function createXmlHttpRequest(url)
        {
            var xmlHttp;
            try
            {
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            }catch(e)
            {
                try
                {
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }catch(E)
                {
                    xmlHttp = false;
                }
            }
            
            if(!xmlHttp && typeof XMLHttpRequest != "undefined")
            {
                xmlHttp = new XMLHttpRequest();
            }
            return xmlHttp;
        }

        function connection(url,fun,style)
        {
            //alert(fun);
            var xmlHttp = createXmlHttpRequest();
            var xmlDoc;
            xmlHttp.onreadystatechange = function()
            {
                if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    if(style == "Text")
                    {
                        xmlDoc = xmlHttp.responseText;
                    }
                    else if(style == "XML")
                    {
                        xmlDoc = xmlHttp.responseXML;
                    }

                    var fun1 = fun;
                    fun1(xmlDoc);
                    }
                }
            };
            xmlHttp.open("GET", url, true);
            xmlHttp.send(null);
            //alert(this.xmlDoc);
            //return xmlDoc;
        }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-104329-1-1.html 上篇帖子: 编写php拓展实例--slime项目(用户登录会话类) 下篇帖子: 微信开发之——Php批量生成带参数的二维码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表