发新话题
打印

flash与ASP通信的几种方法

flash与ASP通信的几种方法

一、使用loadVariables 一个例子简单的描述了如何通过GET方法向服务器端的ASP发送请求: _root. pushAction = function(URL) { this.loadVariables(URL, "GET"); } var ask = true; var pushURL = "http://localhost/test/return.asp?ask="+ ask; pushAction (pushURL); _root.onEnterFrame = fuction(){ trace(_root.output); } 这里首先定义了一个名为pushAction的函数,在loadVariables函数中使用了GET参数。然后定义了一个名为ask的布尔型变量,用来向服务器传递变量。最后使用pushAction函数向服务器上的一个名为return的ASP页面发送GET请求。如果需要对这样的请求作出处理,在ASP中,URL行的分析结果存在于Request对象中,比如下例: return.asp <%@ Language="JScript" %> <% //声明并定义接受请求的变量 var str_getask= Request.QueryString("ask"); //声明并定义返回信息变量 var str_Msg = "Sorry! Your request tread awry."; //如果接受到的变量为true,则返回成功消息 if (str_getask == "true"){ str_Msg = "OK! Your request succeed!"; } Response.write("output=" + str_Msg); %> 这样,一个名字为output,值为str_Msg的变量就发送回Flash Player中,可以在flash中以output的名字引用这个变量。当然我们必须注意服务器在处理这个过程中是需要时间的,因此最后那个onEnterFrame用来测试是否有变量返回. 二、使用LoadVars loadVariables提供了一种简单的方法让我们可以从服务器端的ASP或者PHP页面载入变量,除了使用GET方法,它还可以使用POST方法将客户端提交的数据传递给服务器。然而在处理大量客户端与服务器端交互的信息时,使用过多的loadVariables语句会让整个程序的维护性和可读性变得复杂。在Flash MX的Action中,新增加了一个LoadVars的对象,并将它和XML,XMLSocket对象一起归纳于Client/Server对象之下。LoadVars 对象是 loadVariables 动作的替代方法,它能够提供一种更好的结构向服务器发送和返回信息。一个典型的LoadVars对象使用的例子如下: //构造一个新的LoadVars对象 myload = new LoadVars(); //设定myload的动作,以便服务器验证 myload.action = "post"; //验证和服务器连接的函数 myload.onLoad = function(success) { //如果和服务器成功连接则… if (success) { //如果验证动作成功则… if (this.conn == "1") { //将返回对象中的output变量赋值给场景中var为output的Dynamic Text框 _root.output = this.output; } } else { //如果和服务器连接不成功则返回失败消息,需要检查路径是否正确 _root.output = "Can't connect to Server"; } }; //Dynamic Text的初始值为一个等待消息 _root.output = "Waiting for response..."; //将myload下的变量发送到服务器端,并将服务器返回的数据结果放在myload对象中 myload.sendAndLoad("http://localhost/test/return.asp", myload, "post"); //myload.sendAndLoad("http://localhost:8001/test/return.php",myload, "post"); 在场景中以一个var名为output的Dynamic Text框来接受来自服务器的消息。使用LoadVars,我们可以利用sendAndLoad方法将一个LoadVars的实体下的所有变量发送出去,并将服务器返回的数据结果存储到一个目标对象中,其中conn,output都是从服务器发送回来的,我们还利用了其onLoad事件函数来检验其是否将信息发送到了服务器页面,再利用从服务器传回来的数据(this.conn)来验证信息是否正确。服务器页面的代码如下: ASP return.asp: <%@Language="JScript"%> <% var str_Msg; var action; var conn; action = Request.Form("action"); if (action == "post"){ str_Msg = "OK! return a Msg to you!"; conn = 1; } Response.write("conn=" + conn + "&output=" + str_Msg); %> PHP return.php: 数据库中提取相应的数据,在服务器端脚本中对这两种信息验证。最后将验证成功的信息也以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 "") { //新建一个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的第二帧 这样,如果你输入的name为admin,pass为admin的话,按下确定按钮,服务器的chklogin.asp页面就会接受到以下XML: 在服务器响应并验证了信息之后,需要发送回来以下形式的XML: 最后看看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(""); Response.Write(xmlRepley.xml); %> 我们知道,Flash中xml.sendAndLoad方法是以HTTP的POST方法发送到服务器页面的,因此这个XML数据存在于Request对象中。在DOM中可以直接象在第5行中使用的方法那样以loadXML的方法加载。 虽然可以使用DOM的其他方法来创建xmlRepley 这个XML文档(例如createNode),但是那样对初学者来说是很难控制的。因此简单的以字串的形式加载到xmlRepley中更为直观。如果你有了一定的经验后,需要利用ADO从数据库中提取数据并封装为XML文档,那么就会发现使用createNode方法会有效率一些。

TOP

flash与ASP通信的几种方法

在FLASH中调用ASP
在Flash中使用ASP需要的条件:
1。你的ISP的server必须支持Active Server Pages并且最好支持数据库
2。你应该要安装Flash 4
3。需要你对ASP有初步的了解
OK,下面具体介绍怎么使用:
数据库结构:
第一步要做的是建立数据库.例子中使用Access数据库,表名为tblStaff
有三个字段:strID (自动编号), strKnownAs(Text),strSurname (Text).
这是一个用来示范用户名的数据库,随便加些数据把.
第二步就是建立一个Flash 4的动画罗:
步骤如下:
1)建立三个text field.它们是用来显示数据用的
2)把第一个text field的name设置为Input,它是用来接收输入数据的
3)另外两个text field分别命名为KnownAs和Surname
4)其它设置先为默认
5)最后,从Flash的library中选择增加一个按钮 (应该是一个可重用的组件ScrollBarButton ).
这是很重要的一步,按钮将把输入的变量传递给ASP页面
到按钮的属性(Properties)上单击Action页. 单击"+"号和On MouseEvent.勾上Release框.
6)再次单击"+"号和Load/Unload Movie.选择"Load Variables Into Location"
在URL输入框内输入你的ASP文件名(例如flash.asp). 选择Target.
7)最后,选择Variables中的Send using POST. 单击"+"号来设置变量
在Variable输入框内输入"Input"(就是第一个text field的name)
当上面的工作都完成后,你应该在action box内看到如下内容:
On (Release)
Load Variables ("flash.asp", "", vars=POST)
Set Variable: "Input" = ""
End On
这样当在动画过程中这个按钮被点击并释放后,Input输入框中的内容将被传递给flash.asp文件.
注意form是使用的post方式传递变量的.
8)现在建立一个HTML页面,在其中包含这个Flash动画文件
第三步:ASP文件的代码
需要注意的是在把KnownAs和Surname传递回去的写法,将是这样的
KnownAs=Data1&Surname=Data2
使用Server.URLEncode(VariableName)来保证传递过去变量的是按照 URL格式编码的
下面简单介绍一下ASP和Flash通讯的原理:
变量其实都是通过URL传递给Flash的,其实这是一种GET方法
你不使用ASP其实也可以把变量传递给一个swf文件的,只要这样:
接着文本"Text of my variable"将会出现在Flash的动画中指定的位置
好了,该说的都说了,现在对于ASP的开发者来说,只要把Flash所需要的数据准备好,然后利用Flash中的动画
功能就可以做出强劲的网页出来了.最简单的是利用flash结合数据库画一个很漂亮的饼图,呵呵.反正只要大家能够想象就可以做出
很多很好的东西出来的.


TOP

flash与ASP通信的几种方法

Flash和Asp数据库的结合应用
在看这个例子之前,先讲讲Flash和Asp结合的原理,其实懂一点ASP的朋友都知道ASP是基于HTML的.
  其实Flash和Asp接口的原理和纯ASP文件之间交互的原理是一样的,简单地说就是页面之间的数据交换。了解了这一点之后,我们来看看下面这个简单的例子:
  这个例子是把ACCESS内的数据读出来,并在Flash内显示出来。这个例子一共有三个主要文件,一个是ACCESS的数据库文件employees.mdb,它有一个employees表,有四个字段:ID,Namelast,Lastname,Position。
  现在我们就来看看这个例子的制作过程吧。第一个影帧,ACTION是stop,有一个供用户输入查询字段的文本框:strSearch,一个按钮:submit,它的ACTION是
  于 (放开)
   跳至并播放 (2)
  退出于
  第二个影帧的ACTION是:载入参数 (employee.asp, 0, vars=GET)
  这个ACTION的作用是通过ASP文件把ACCESS数据库内符合用户查询条件的数据读出来。

  第三个影帧的ACTION是:
  如果(NameFirst ne )
   跳至并停止 (9)
  退出如果
  意思是如果NameFirst不等于空值的话,就跳到第九个影帧;否则将会执行下去(即播放下一个影帧)。
  第4-7个影帧都没有ACTION哦。
  第八个影帧的ACTION是:
  跳至并播放 (3)
  回过头来再看看第三个影帧看看,呵呵,懂了吧?
  如果没有符合的数据的话,就一直读到有为止;读到了就跳到第九个影帧哦。
  那么再来看看第九个影帧:
  一共有三个文本框:NameFirst,NameLast,Position
  数据库内符合查询条件的数据将会显示在他们之中哦!
  还有一个按钮:Do It Again
  它的ACTION是:
  于 (放开)
    跳至并停止 (1)
  退出于
  好了,再来看看employee.asp这个文件吧:
Dim oRS, oConn 定义两个变量
Set oRS = Server.CreateObject(ADODB.Recordset) 定义oRS为RECORDSET对象
Set oConn = Server.CreateObject(ADODB.Connection) 定义oConn为CONNECTION对象
oConn.ConnectionString = Driver={Microsoft Access Driver (*.mdb)};
DBQ= & Server.MapPath(employees.mdb)
oRS.Open SELECT * FROM Employees, oConn, 2, 3
嘿嘿,这两句不用说了吧?打开数据库哦
oRS.Find NameLast = & UCase(Request.QueryString(strSearch)) &
找到符合条件的数据
If oRS.EOF Then 如果数据指针已到底
 Response.Write NameLast=Not+Found&NameFirst=Not+Found&osition=Not+Found
  呵呵,那么NameLast就是没有找到符合条件的数据咯
 Else
  Response.Write NameFirst=
  & Server.URLEncode(oRS(NameFirst))
  & &NameLast= & Server.URLEncode(oRS(NameLast))
  & &osition= & Server.URLEncode(oRS(Position))
  找到的话就是找到咯(废话嘛。。。)
End If
oRS.Close
Set oRS = Nothing
oConn.Close
Set oConn = Nothing 关闭并清空数据库对象

TOP

flash与ASP通信的几种方法

谢了!

TOP

flash与ASP通信的几种方法

收藏

TOP

发新话题