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

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文件,再对其产生的数据进行操作

    Java Ajax 无刷新分页实例(完整版)

    总的来说,"Java AJAX 无刷新分页实例(完整版)"是一个涵盖了前端交互、后端处理、数据库操作和用户体验设计等多个方面综合的项目,对于学习和实践Web开发中的AJAX应用非常有帮助。通过理解和实践这个实例,开发者...

    ajax无刷新实例,无刷新分页,带数据库源文件

    【标题】中的“ajax无刷新实例,无刷新分页”主要涉及的是Web开发中的Ajax技术,这是一种能够在不重新加载整个网页的情况下更新部分网页内容的技术。Ajax全称Asynchronous JavaScript and XML(异步JavaScript和XML)...

    tp3.2+ajax无刷新分页

    综上所述,"tp3.2+ajax无刷新分页"是一个全面的Web开发实例,涵盖了ThinkPHP 3.2框架的使用、Ajax技术的实践以及数据库和用户体验优化等多个方面的知识。通过学习和实践这个实例,开发者可以提升自己的Web开发技能,...

    Jquery Ajax分页(有实例)

    jQuery,一个轻量级、功能丰富的JavaScript库,结合AJAX(异步JavaScript和XML)技术,可以实现动态、高效的分页效果。本篇文章将深入探讨jQuery AJAX分页的原理与实践,通过具体的实例来展示如何实现炫酷的分页功能...

    无刷新分页实例

    总的来说,利用jQuery和Ajax实现无刷新分页是一个涉及前端交互、数据传输和DOM操作的过程。这个实例不仅适用于初学者,也对有经验的开发者具有参考价值,因为它展示了如何结合使用jQuery的便利功能来提升Web应用的...

    SSH+Mysql无刷新分页实例

    在这个"SSH+Mysql无刷新分页实例"中,我们将探讨如何利用SSH框架与MySQL数据库实现网页的无刷新分页功能,从而提高用户体验。 首先,SSH框架中的Spring负责控制层,它提供依赖注入(Dependency Injection,DI)和...

    AJAX无刷新分页

    为了解决这个问题,AJAX(Asynchronous JavaScript and XML)无刷新分页技术应运而生。它允许网页在不重新加载整个页面的情况下,仅更新部分区域,从而提高了用户体验。 **一、AJAX基础** AJAX 是一种在无需刷新...

    利用Ajax实现无刷新分页

    传统的分页方式需要用户每次点击分页按钮时整个页面重新加载,而Ajax(Asynchronous JavaScript and XML)技术则可以实现页面无刷新的分页效果,提供更流畅的浏览体验。本文将深入讲解如何利用JSP和Ajax来实现这一...

    asp +JqueryAjax+access 无刷新分页

    【ASP + JqueryAjax + Access 无刷新分页】是一种网页开发技术,它结合了ASP(Active Server Pages)后端处理、JqueryAjax前端异步通信以及Access数据库的数据存储,以实现网页数据的动态加载,无需整个页面刷新,...

    ASP+ajax 实现无刷新分页效果

    在本场景中,ASP与Ajax(Asynchronous JavaScript and XML)结合,旨在创建交互性更强、用户体验更好的Web应用,特别是在分页显示大量数据时,通过无刷新技术提升用户体验。 Ajax的核心在于无需整个页面刷新,只需...

    无刷新评论 无刷新分页等ajax应用~~

    无刷新评论和无刷新分页是现代Web应用中常见的特性,它们通过Ajax技术实现了页面的动态更新,无需用户手动刷新整个页面。Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下,与服务器交换...

    【ASP.NET编程知识】asp.net中利用Jquery+Ajax+Json实现无刷新分页的实例代码.docx

    "ASP.NET编程知识:ASP.NET中利用Jquery+Ajax+Json实现无刷新分页的实例代码" 本文将详细介绍如何使用Jquery、Ajax和Json技术在ASP.NET中实现无刷新分页的实例代码。通过本文,读者将了解到无刷新分页的实现原理、...

    ASP实例开发源码—Ajax 无刷新分页代码.zip

    在这个"ASP实例开发源码—Ajax 无刷新分页代码.zip"中,我们很可能会看到一个使用ASP和Ajax实现的无刷新分页功能。这个功能在网页上展示大量数据时非常有用,比如在论坛、电商网站的商品列表、新闻列表等场景下,...

    使用Ajax实现无刷新分页显示

    "使用Ajax实现无刷新分页显示"是一种提高用户体验的有效方法,它允许用户在不重新加载整个页面的情况下浏览内容的多个部分,如分页数据。这种方式可以显著减少等待时间,提高网页的响应速度。下面将详细介绍这个主题...

    Ajax 无刷新分页

    Ajax(Asynchronous JavaScript and XML)无刷新分页技术是一种在网页上实现动态更新内容的方式,它使得用户在浏览数据分页时无需等待整个页面重新加载,提高了用户体验。本篇文章将深入探讨Ajax无刷新分页的核心...

    ajax 实现无刷新分页

    而Ajax(Asynchronous JavaScript and XML)技术的出现,使得我们可以实现无刷新分页,即在不重新加载整个页面的情况下更新部分网页内容,极大地提高了用户体验。 **一、Ajax基础** Ajax的核心是XMLHttpRequest...

    jquery 无刷新分页排序

    **jQuery无刷新分页排序**是一种高效的网页交互技术,它结合了Ajax和jQuery库的优势,为用户提供了流畅的浏览体验,无需每次操作都重新加载整个页面。这种技术在大数据量的展示场景中尤为常见,如在线表格、论坛、...

    flash通过XML读取图片进行分页及html无刷新分页(附带源码)

    总结来说,这个技术结合了Flash的动态加载能力和XML的数据交换特性,实现了图片的无刷新分页展示。虽然现代网页设计已经倾向于使用HTML5、CSS3和JavaScript,但理解这种旧技术可以帮助我们更好地理解和解决问题。...

    Ajax无刷新分页代码

    以下是一个简单的Ajax无刷新分页代码片段,使用jQuery简化了部分操作: ```javascript $(document).ready(function() { $('#pagination a').click(function(e) { e.preventDefault(); var page = $(this).attr...

Global site tag (gtag.js) - Google Analytics