Flash & Ajax 操作 XML 实例:无刷新分页

其实标题只是一个噱头罢了,只是想谈一下,Javascript 与 Actionscript 是如何操作XML的。
希望能帮助一些只用 Javascript  或 只懂 Actionscript 的朋友,了解两者的相同与不同之处。
Flash 与 后台连接有许多种,Actionscript 调用 XML() 算是比较简单的一种了,
而Javascript 调用 xmlHttp ,便形成了现在很流行的Ajax了。
现在就用一个网上常出现的分页效果来对 Flash 和 Ajax 做个入门学习。
效果预览
源文件下截
source.rar
实际运用中一般是通过后台脚本生成XML文件,再对其产生的数据进行操作
由于篇幅关系在本文中将用1.xml 2.xml 3.xml代替。后台脚本不做说明
首先了解一个XML的结构:


代码如下:

<data>  
  <movie id="1" type="爱情">幸福终点站</movie>  
  <movie id="2" type="恐怖">绝命终结站</movie>  
  <movie id="3" type="喜剧">恐怖电影</movie>  
  …  
  ….  
</data>

从简单的Flash开始吧


代码如下:

function setxml(page){  
  pageXml = new XML();                                         //申明XML对象  
  pageXml.ignoreWhite = true;                                 //允许空白  
  pageXml.load(page+".xml?rid="+Math.random());                //读取XML文件  
  pageXml.onLoad = function(success)  
  {  
    if (success)  
      {  
      parseXml(pageXml);                                       //如果读取成功,分析XML文件  
    }  
  }  
}  
function parseXml(pageXml){  
  xmlroot = ageXml.firstChild;                                     //定义XML根目录  
  for (i=0;i<xmlroot.childNodes.length;i++)  
  {  
    attachMovie("tr","tr_"+i,i);                                     //生成行  
    this["tr_"+i]._x = 13;  
    this["tr_"+i]._y = 25*i+33;  
    this["tr_"+i].no = xmlroot.childNodes[i].attributes.id;         //取得一条记录的ID  
    this["tr_"+i].name = xmlroot.childNodes[i].firstChild;          //片名  
    this["tr_"+i].type = xmlroot.childNodes[i].attributes.type;     //类型  
    page = pageXml.firstChild.attributes.page;                      //获取当前页  
  }  
}  
if (!page)                                                         //初始页码为第一页 page=1;  
  setxml(page);                                                    //初始第一页内容  
presetxmlbtn.onRelease = function()  
{  
  setxml(page*1-1);                                                //向前翻页,读取内容  
}            
nextbtn.onRelease = function()  
{  
  setxml(page*1+1);                                                //向后翻页,读取内容  
}

接下来是Ajax了
关于Ajax 入门学习可以有翻一下我以前的日志,我推荐过两篇不错的文章


代码如下:

var xmlHttp  
/*  
第一部分是有关xmlHttp的申明,因为IE和其它一些浏览生成xmlHttp的对象有一点两样,所以申明时比较麻烦  
其它主要功能相当于Flash方式中的 "new XML()" 当然还包函其它功能   
*/  
function GetXmlHttpObject(handler)  
{   
  var objXmlHttp=null;   
  if (navigator.userAgent.indexOf("MSIE")>=0)  
  {   
    var strName="Msxml2.XMLHTTP";  
    if (navigator.appVersion.indexOf("MSIE 5.5")>=0)             //既使是IE都有两种申明方式  
    {  
      strName="Microsoft.XMLHTTP";  
    }   
    try  
    {   
      objXmlHttp=new ActiveXObject(strName);  
      objXmlHttp.onreadystatechange=handler;   
      return objXmlHttp;  
    }   
    catch(e)  
    {   
      alert("Error. Scripting for ActiveX might be disabled");   
      return;  
    }   
  }  
  else  
  {  
    objXmlHttp=new XMLHttpRequest();                             //Firefox、Opera等都是用这种  
    objXmlHttp.onload=handler;  
    objXmlHttp.onerror=handler;  
    return objXmlHttp;  
  }  
}  
//首先要被调用的函数,可看作上面Flash中的 setxml()函数,  
function showpage(no)  
{  
  document.getElementById("loadstatus").innerHTML = "Lading…";  
  var url = no+".xml?rid="+Math.random();  
  //stateChanged_showplist是下面的函数名,注意的是不要加括号  
  xmlHttp=GetXmlHttpObject(stateChanged_showplist);  
  //传递方式是GET,也可以选择POST方式,有时传递变量是中文要记得设置文件头                     
  xmlHttp.open("GET", url , true);  
  xmlHttp.send(null);  
}  
//分析XML函数  
function stateChanged_showplist()  
{  
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") //xmlHttp.readyState==4  4表示读取结束  
  {  
    document.getElementById("loadstatus").innerHTML = " ";  
    table = document.getElementById("pagebody");               //生成TALBE Element  
    for (i = table.rows.length-1; i >= 0; i–)                 //要删除原来有的行,不然表格会无限延伸  
      table.deleteRow(i);  
    xmlroot = xmlHttp.responseXML.getElementsByTagName("movie");  //取得XML所需要的根

for (i=0;i<xmlroot.length;i++)  
    {  
      //简单的DOM,生成表格。  
      tr = table.insertRow(-1);   
      td = tr.insertCell(-1);  
      td.align = "center";  
      td.innerHTML = ‘<span class="warntxt">'+xmlroot[i].getAttribute('id')+'</span>';  
      td = tr.insertCell(-1);  
      td.innerHTML = xmlroot[i].firstChild.data;  
      td = tr.insertCell(-1);  
      td.innerHTML = xmlroot[i].getAttribute('type');  
    }  
    //定义翻页链接  
    page = xmlHttp.responseXML.getElementsByTagName("data")[0].getAttribute('page')  
    if (page >1)  
    {  
      prepage = page*1-1;  
      var changpage = "<a href='javascript:showpage("+ prepage +")'>上一页</a> ";  
    }  
    else  
    {  
      changpage = "上一页 ";  
    }  
    if (page <3)  
    {  
      nextpage = page*1+1;  
      changpage += "<a href='javascript:showpage("+ nextpage +")'>下一页</a> ";  
    }  
    else{  
      changpage += "下一页 ";  
    }  
    document.getElementById("changpage").innerHTML = changpage;  
  }  
}

(0)

相关推荐

  • ajax实现无刷新分页(php)

    复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>投票结果</title> <meta http-equiv="content-type" content=&quo

  • jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页

    ******生成js分页脚****** ****没剑(2008-03-05)**** 修改日期:2008-3-12 添加两个参数:displaynum,displaylastNum可以自由定制显示的页码数量 参数: pagesize:10 //每页显示的页码数 ,count:0 //数据条数 ,css:"mj_pagefoot" //分页脚css样式类 ,current:1 //当前页码 ,displaynum:7 //中间显示页码数 ,displaylastNum:5 //最后显示的

  • AspNetAjaxPager,Asp.Net通用无刷新Ajax分页控件,支持多样式多数据绑定

    本控件可以对GridView,Repeater,DataGrid,DataList...几乎所有的.net数据绑定控件进行分页,全部无刷新,数据绑定部分可以使用存储过程也可以直接使用sql语句,这对本控件没有任何干扰!本控件具有较好的用户界面,能够根据需要变换各种样式,配合css控制效果则更好! 1.分页样式效果图: 2.如何使用: 于bin目录下添加:AspNetAjaxPager.dll引用 aspx文件内容: 复制代码 代码如下: <%@ Page Language="C#"

  • JS+Ajax+Jquery实现页面无刷新分页以及分组 超强的实现第1/2页

    复制代码 代码如下: <%@ Page language="c#" Codebehind="GroupText.aspx.cs" AutoEventWireup="false" Inherits="test1.GroupText" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML&g

  • 实例代码讲解ajax实现的无刷新分页

    1.Ajax 无刷新页面的好处:提供良好的客户体验,通过 Ajax 在后台从数据库中取得数据并展示,取缔了等待加载页面而出现的空白状态: 2.那么,Ajax 无刷新页面是运行在动态页面(.php)?还是静态页面(.html/.htm/.shtml)?答案是:静态页面: 3.实现原理:通过前端 JS 脚本程序与 Ajax 相结合取得从动态页面返回的数据,并显示. 现在什么都讲究一个无刷新,就连分页也是如此,下面是小编日常整理的关于一段无刷新代码,希望能够帮到大家. 代码如下: 一.html代码部分

  • jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版

    原项目地址:http://plugins.jquery.com/project/pagination版本:v1.2源文件下载:英文原版 或中文翻译修改版 一.相关demo 基本demo页面 Ajax demo页面 参数可编辑demo页面二.简介与说明 此jQuery插件为Ajax分页插件,一次性加载,故分页切换时无刷新与延迟,如果数据量较大不建议用此方法,因为加载会比较慢. 原插件CSS不太合理,使用浮动,故无法方便实现左右方向的定位,且未清除浮动,在中文修改版中我对其进行了优化,使其支持tex

  • php+ajax实现无刷新分页的方法

    本文实例讲述了php+ajax实现无刷新分页的方法.分享给大家供大家参考.具体实现方法如下: 这是一款基于原生态的php +js +ajax 的分页程序实例,我们详细的从数据库创建到js,php,html页面的创建来告诉你如何实现ajax分页调用数据的方法. 具体步骤如下: 一.创建数据库 SQL语句如下: 复制代码 代码如下: CREATE TABLE `tb_user` (   `id` int(10) NOT NULL auto_increment,   `username` varcha

  • JQuery+Ajax无刷新分页的实例代码

    先看效果图: 实现原理很简单,使用了jquery.pagination这个插件,每当点击页码时异步去服务器去取该页的数据,简单介绍如下: 一.数据库表结构:很简单  就四个字段 分别是News_id  News_title  News_time  News_readtimes 二.前台页面代码: 复制代码 代码如下: <head runat="server">    <title>JQuery无刷新分页</title>    <link hre

  • php ajax无刷新分页,支持id定位

    <?php Header("Content-Type:text/html; charset=utf-8"); function AjaxPage($Total,$ListNub,$CurrentPage,$Url,$AjaxAction,$HalfPer='',$ViewId='') { //计算总页数 $totalPage = @ceil($Total/$ListNub); $total=$totalPage-1; $re=""; //echo $Curre

  • asp.net使用AJAX实现无刷新分页

    查询功能是开发中最重要的一个功能,大量数据的显示,我们用的最多的就是分页. 在ASP.NET 中有很多数据展现的控件,比如Repeater.GridView,用的最多的GridView,它同时也自带了分页的功能.但是我们知道用GridView来显示数据,如果没有禁用ViewState,页面的大小会是非常的大的.而且平时我们点击首页,下一页,上一页,尾页这些功能都是会引起页面回发的,也就是需要完全跟服务器进行交互,来回响应的时间,传输的数据量都是很大的. AJAX的分页可以很好的解决这些问题. 数

随机推荐