其实标题只是一个噱头罢了,只是想谈一下,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;
}
}
希望能帮助一些只用 Javascript 或 只懂 Actionscript 的朋友,了解两者的相同与不同之处。
Flash 与 后台连接有许多种,Actionscript 调用 XML() 算是比较简单的一种了,
而Javascript 调用 xmlHttp ,便形成了现在很流行的Ajax了。
现在就用一个网上常出现的分页效果来对 Flash 和 Ajax 做个入门学习。
效果预览
源文件下截
![Flash & Ajax 操作 XML 实例:无刷新分页](/UploadFiles/2021-04-02/rar.gif)
实际运用中一般是通过后台脚本生成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;
}
}
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“Flash & Ajax 操作 XML 实例:无刷新分页”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
20240901
20240901
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- [音展纪念碟]2006年《TAA台湾第十六届国际HI-ENDHI-FI音响展》2cd[WAV]
- 中国音乐地图之听见西藏山歌牧歌酒歌2020[WAV分轨]
- 王宏伟2017-永远的红飘带[太平洋影音][WAV+CUE]
- 费翔.1997-NOW现在【第一中国】【WAV+CUE】
- 新格合唱团.1981-我唱你和2辑(滚石新格民歌系列)【新格】【WAV+CUE】
- 陈柏宇.2011-QUINQUENNIUM【SONY】【WAV+CUE】
- 雨果唱片-《金唛系列-蔷薇依韵琼瑶》WAV
- 陈百强《凝望(2012华纳LPCD45限量版)[DMI]》[WAV整轨]
- 模拟之声慢刻CD《徐小凤45周年》[德国母带][低速原抓WAV+CUE]
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- 《王菲 单曲合集》[FlAC/分轨][520MB]
- 《费玉清 原味再现 水长流》[WAV+CUE][430MB]
- 群星.1992-畅销榜老歌金曲10CD【风格】【WAV+CUE】
- 孙悦.2024-时光音乐会【金蜂】【WAV+CUE】