使用xml--flash与ASP通信的几种方法

Flash中的XML对象也有方法可以将XML数据向服务器发送。即send和sendAndLoad。send方法向某个 URL 传递 XML 对象,返回的信息都被发送到另外一个浏览器窗口;sendAndLoad 方法向某个 URL 发送一个 XML 对象。返回的信息都放在一个XML对象中。
在某种程度上, XML的send方法和sendAndLoad方法类似于loadVars对象的send方法和sendAndLoad方法。
以login系统为例。首先将Flash中需要传送的信息(用户名和密码)转换成一个 XML 对象,然后将数据作为 XML 文档发送到服务器端脚本。在服务器端我们还是从数据库中提取相应的数据,在服务器端脚本中对这两种信息验证。最后将验证成功的信息也以XML格式传送回Flash。图1显示了这种结构:

首先,看看数据库的结构,很简单,用Access做一个名为login.mdb(存储到同swf,asp文件同同一目录下)的数据库文件,然后新建一个名为admin的表,第一个字段名称是”id”,数据类型是自动编号;第二个字段名称是username,数据类型是文本。字段大小改为16;第三个字段名称为password,数据类型是文本,字段大小也改为16。表结构如图2所示:

接着,我们用Flash做一个登录界面。为了使得这个界面在其他地方也能用到,可以将所有的元件都集中到一个名为login的MC里面。这个MC的基本结构如下:
bg层:用来放置登录界面的背景。第二帧加关键帧;
Title层:用来放置标题MC,MC名字为title,因为只是一个标题,就不列出这个MC的结构了。第二帧加关键帧;
Inputbg层:input文本的背景。
InputTXT层:两个input文本,第一个的var为name,第二个的var为pass,类型为Password,我们要向服务器发送的变量就从这里获得;
Pushbt层:一个确定按钮(名字为pushbt),用来发送一个XML变量,其action如下:
Action for pushbt:
on (release, keyPress "<Enter>") {
//新建一个xml对象,节点明为LOGIN。在属性
//中存放用户名和密码
loginXML = new XML();
loginElement = loginXML.createElement("LOGIN");
loginElement.attributes.name = this.name;
loginElement.attributes.pass = this.pass;
loginXML.appendChild(loginElement);
//新建一个xml对象,用来存放从服务器返回的信息
loginReplyXML = new XML();
loginXML.sendAndLoad("http://localhost/chklogin.asp", loginReplyXML);
Msg = "正在等待服务器验证";
gotoAndStop(2);
}


这一层有两帧,第一帧的action为stop();第二帧上的action为
Action for frame2
stop();
function onLoginReply() {
//提取从服务器返回的数据并判断信息是否正确
var reply = this.firstChild;
if (reply.nodeName == "LOGINREPLY" && reply.attributes.login == "1") {
Msg = reply.attributes.msg;
}
}
//返回服务器信息
loginReplyXML.onLoad = onLoginReply;

这个MC最后将如图3所示:

↑ login MC的第一帧

↑ login MC的第二帧

这样,如果你输入的name为admin,pass为admin的话,按下确定按钮,服务器的chklogin.asp页面就会接受到以下XML:
<LOGIN pass ="admin" name ="admin" />
在服务器响应并验证了信息之后,需要发送回来以下形式的XML:
<LOGINREPLY login=”1” Msg=someMessage />

最后看看asp怎么写。
chklogin.asp:
<%@ Language="JScript"%>
<%
//创建一个新的DomDocument对象,存入客户端传送过来的XML请求
var xmlReceive = new ActiveXObject("Msxml2.DomDocument");
xmlReceive.loadXML(Request.Form());
var reElement = xmlReceive.documentElement;
//提取用户名和密码信息
password = reElement.attributes[0].nodeValue;
username = reElement.attributes[1].nodeValue;
//创建并打开一个新连接。
var conn = new ActiveXObject("ADODB.CONNECTION");
strconn = "DBQ="+Server.MapPath("login.mdb")+";DefaultDir=;Driver={Microsoft Access Driver (*.mdb)};";
conn.Open(strconn);
//新建并打开一个查询
var rs = new ActiveXObject("ADODB.RECORDSET");
sql = "select * from admin where id=1";
rs.open(sql,conn,1,1);
//开始验证
if (!(rs.BOF && rs.EOF)){
    if (password == rs("password") && username == rs("username")){
        Msg = "恭喜你," + username + "你已经成功登陆!";
    }else if(username != rs("username")){
    Msg = "对不起,您填写的用户名不正确,请返回重新填写";
        }else if(password != rs("password")){
        Msg = "对不起,您填写的密码不正确,请返回重新填写";       
}
}else{
Msg = "登陆没有成功,看上去服务器出了点问题。"
}
//创建一个新的DomDocument对象,向客户端发送
var xmlRepley = new ActiveXObject("Msxml2.DomDocument");
xmlRepley.loadXML("<LOGINREPLY login='1' msg='"+Msg+"' />");
Response.Write(xmlRepley.xml);
%>


我们知道,Flash中xml.sendAndLoad方法是以HTTP的POST方法发送到服务器页面的,因此这个XML数据存在于Request对象中。在DOM中可以直接象在第5行中使用的方法那样以loadXML的方法加载。
虽然可以使用DOM的其他方法来创建xmlRepley 这个XML文档(例如createNode),但是那样对初学者来说是很难控制的。因此简单的以字串的形式加载到xmlRepley中更为直观。如果你有了一定的经验后,需要利用ADO从数据库中提取数据并封装为XML文档,那么就会发现使用createNode方法会有效率一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
功能: 1.网站首页模板使用双样式[顶部菜单模式,左侧活动菜单模式],用户可在后台只有选择模板样式; 2.网站主模块采用静态XML文件,从而提高了加载速度。XML有后台智能生成,维护简单方便; 3.网站风格自定义功能,前台所有可视项均可在后台设置。用户可以在不使用Flash软件的情况下,轻松的制作出属于自己的风格网站; 4.加入CSS样式显示,网站内容文本采用CSS样式定义显示,用户可轻松的设置文本字体显示方式; 5.说明性文本加入滚动条,字数超过显示区域也可以显示。 6.留言模块提交项目可在后台自由设置,留言模块提交项目由原来的固定三项.改为可以自由设置的四项。 ***************************************************************** 运行主机要求: 基本要求:支持无组件上传、ADODB.Stream; 如需自动生成缩略图需安装:CreatePreviewImage.cGvbox、 Persits.Jpeg、 SoftArtisans.ImageGen 中的任意一个组件; 如需在线发生邮件需支持:WIN 虚拟 SMTP、 JMail、 ASPEmail 中的任意一个组件。 ***************************************************************** 文件说明: 1. 数据库文件:data/data.asp (如需编辑数据库请将后缀名改成.mdb。你可以修改数据库文件名;同需修改数据库连接。) 2. 数据库连接:inc/mdb.asp(如修改了数据库名,请修改本文件数据库路径。) 3.后台路径:/admin/ 4.后台用户名:admin 后台密码:admin (登陆后台后在 >> 个人信息 >> 修改密码 处修改.) ***************************************************************** 为了您更安全的使用本系统请将后台目录(admin)重命名: 如:将admin文件夹重命名为:pppp 后台访问网址为:http://你的域名/pppp/ 这样既可隐藏你的网站后台。 qq22765489 专业为你服务~~你看中,我破解! 今天您看中了么? :)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值