`
phantom
  • 浏览: 159882 次
社区版块
存档分类
最新评论

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

阅读更多

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

效果预览

其实标题只是一个噱头罢了,只是想谈一下,Javascript 与 Actionscript 是如何操作XML的。
希望能帮助一些只用 Javascript  或 只懂 Actionscript 的朋友,了解两者的相同与不同之处。

Flash 与 后台连接有许多种,Actionscript 调用 XML() 算是比较简单的一种了,
而Javascript 调用 xmlHttp ,便形成了现在很流行的Ajax了。

现在就用一个网上常出现的分页效果来对 Flash 和 Ajax 做个入门学习。 

实际运用中一般是通过后台脚本生成XML文件,再对其产生的数据进行操作
由于篇幅关系在本文中将用1.xml 2.xml 3.xml代替。后台脚本不做说明

首先了解一个XML的结构:

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

从简单的Flash开始吧

CODE:
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了

CODE:

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;
  }
}

分享到:
评论

相关推荐

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

    其实标题只是一个噱头罢了,只是想谈... 现在就用一个网上常出现的分页效果来对 Flash 和 Ajax 做个入门学习。 效果预览源文件下截source.rar实际运用中一般是通过后台脚本生成XML文件,再对其产生的数据进行操作

    PHP+Ajax网站开发典型实例-源代码

    第3章 数据库、XML实例 实例22 mysql类库完成MySQL数据库的添加、删除和修改 实例23 mysqli类库完成MySQL数据库的添加、删除和查询 实例24 获取服务器和系统信息 实例25 分页显示信息 实例26 使用PHP简单实现BBS程序...

    PHP+Ajax网站开发典型实例

    第3章 数据库、XML实例 实例22 mysql类库完成MySQL数据库的添加、删除和修改 实例23 mysqli类库完成MySQL数据库的添加、删除和查询 实例24 获取服务器和系统信息 实例25 分页显示信息 实例26 使用PHP简单实现...

    jPagerBar的ASP.NET无刷新分页示例程序

    内容索引:.NET源码,Ajax相关,jQuery,无刷新分页 jPagerBar是一款基于jQuery的分页插件,但是官方的实例太少,有些朋友想用但不知所措,它主要是配合AJAX/JSON等响应方式及数据格式,自动生成页码栏,可以在同一网页...

    利用Ajax分页的源码实例

    学习AJAX的朋友可以用一下。 默认页为TestForm.aspx 利用Ajax和xml结合进行无刷新分页 本程序使用SQLServer2000的pubs数据库,连接字符串在Web.config中

    Asp+AJAX静态分页 亲测 可用

    Asp+AJAX静态分页&lt;/title&gt; &lt;style type="text/css"&gt; &lt;!-- body { text-align:center;font:14px Verdana,sans-serif; } a:link,a:visited { color:#00f;text-decoration:none; } a:hover { color:#f00...

    Ajax实现页面自动刷新实例解析

    AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。 AJAX 是一种用于创建快速动态网页的...

    Ajax读取数据之分页显示篇实现代码

    我先讲一下这个ajax分页的实现核心,然后我们再看实例效果.所谓的ajax分页与传统的数据分页,在服务端的代码基本上是一样的.我们主要做的是使用ajax在不刷新的情况下,将请求的页码,和每页要显示的条数发送给...

    AJAX基础概念、核心技术与典型案例(内涵动态实例)

    程序描述:本章将使用Ajax技术实现无刷新即可浏览RSS的阅读器。添加一个RSS地址时,自动保存到数据库。打开阅读RSS时,自动获取最新的RSS内容,而无需刷新页面。 /RSSReader.jsp RSS阅读器 /rss.js ...

    DevPage2005 分页控件Demo源码

    对于SEO优化来说AJAX分页及局部刷新分页,在百度,Google等搜索引擎收录来说十分不利,因为搜索引擎都是靠URL来记录的。 1、在工具栏选择项然后浏览控件DevPage Vs2005 Release 1.0 控件目录 2、修改WebConfig里的Sql...

    xml分页+ajax请求数据源+dom取结果实例代码

    客户端使用xml数据岛分页显示(使用数据岛分页比较简单,不用写太多的代码) 3.搜索时,根据当前选择(下拉框)的分类ID,和搜索关键字,重新使用ajax请求(好像也可以使用xml的结果过滤,但为了方便,重新请求算了),跳到第2步...

    DevPage2005 分页控件Demo源码 只要2分

    对于SEO优化来说AJAX分页及局部刷新分页,在百度,Google等搜索引擎收录来说十分不利,因为搜索引擎都是靠URL来记录的。 1、在工具栏选择项然后浏览控件DevPage Vs2005 Release 1.0 控件目录 2、修改WebConfig里的Sql...

    DevPagerSample分页控件

    *************DevPage2005 1.0 Beta版 可视化分页控件调用实例源码************** ...对于SEO优化来说AJAX分页及局部刷新分页,在百度,Google等搜索引擎收录来说十分不利,因为搜索引擎都是靠URL来记录的。

    jQuery基于xml格式数据实现模糊查询及分页功能的方法

    本文实例讲述了jQuery基于xml格式数据实现模糊查询及分页功能的方法。分享给大家供大家参考,具体如下: 1、此代码只支持xml 格式数据,根据不同需求修改ajax的success方法就ok了 2、此代码只是针对ajax只需一次请求...

    第7章 数据绑定控件

    实例240 异步无刷新水平滚动照片 (AJAX+ListView) 379 实例241 编辑绑定在ListView中的照片 (ADO.NET版) 380 实例242 编辑绑定在ListView中的照片 (LINQ版) 382 实例243 高亮显示ListView中的数据行并实现 ...

    php课程(共100多节)

    77:Zend framework数据库操作之编辑和视图函数 78:PHP+Flash多文件异步上传 swfupload 79:PHP上传RAR压缩包并解压目录 80:ADODB PHP 数据库万能引擎类(上) 81:ADODB PHP 数据库万能引擎类(下) 82:PHP开发...

Global site tag (gtag.js) - Google Analytics