使用LoadVars实现Flash与服务器通信

这篇教程简单讲解如何使用LoadVars实现Flash与HTTP Service通信。通过本例的学习,我们将了解怎样整合LoadVars对象和HTTP Service开发Flash RIAs的基本流程。

从Flash Player 6开始,可以使用LoadVars对象来实现Flash与后台通信。同loadVariables函数一样,它只能接收MIME格式的字符串变量。而且遇 到特殊字符时,必须进行URL编码。

LoadVars对象通过其sendAndLoad方法将对象中的属性变量发送(send)到指定的 URL,同时载入(load)服务端器的输出变量并将其放入 目标对象中。当然,发送和载入这两个过程可以分开进行。这就是LoadVars对象比loadVariables函数强大之处,另外一个强大之处在于:载入变量时,还可以通过LoadVars对象的 onLoad事件来判断载入的结果是成功还是失败。请看下面的例子。

请在舞台上添加名为name_ti 的TextInput 实例,名为 msg_taresult_ta的 TextArea 实例和名为send_btn 的Button实例。将下面的ActionScript添加到时间轴的第 1 帧:

var submitListener:Object = new Object();
submitListener.click = function(evt:Object) {
	var result_lv:LoadVars = new LoadVars();
	var send_lv:LoadVars = new LoadVars();
	send_lv.userName = name_ti.text;
	send_lv.msg = msg_ta.text;
	send_lv.sendAndLoad("http://www.riafan.com/service/echo.asp", result_lv, "POST");
	result_lv.onLoad = function(success:Boolean) {
		if (success) {
			result_ta.text = result_lv.resultVar;
		} else {
			result_ta.text = "连接到服务器失败";
		}
	}
}
send_btn.addEventListener("click", submitListener);

说明:当用户单击下面示例中Login按钮实例时,将创建两个LoadVars对象:send_lvresult_lv。send_lv对象从name_timsg_ta实例复制名称并将数据发送到echo.asp。此脚本的结果将载入result_lv对象,服务器响应则显示在TextArea实例 (result_ta) 中。

前面说过,任何服务器端编程语言,只要按[变量/值]配对的格式输出纯文本文件就能和Flash连接。接下来我们就来看这个实例的服务器端代码。

ASP版:

<%@LANGUAGE="VBscript" CODEPAGE="65001"%>
<%Dim userName,msguser
Name=Request.Form("userName")
msg=Request.Form("msg")
Response.Write "resultVar="&userName&"说:"&msg
%>

ASP.net版:

<%@ Page Language="C#"%>
<%
string userName,msg;
userName = Request.Form["userName"].ToString();
msg = Request.Form["msg"].ToString();
Response.Write("resultVar="+userName+"说:"+msg);
%>

PHP版:

<?php
$userName=$_POST["userName"];
$msg=$_POST["msg"];
echo "resultVar=".$userName."说:".$msg
?>

CFM版:

<cfparam name="userName" default="" type="any">
<cfparam name="msg" default="" type="any">
<cfoutput>resultVar=#userName#说:#msg#</cfoutput>

JSP版:

<%@ page language="java" pageEncoding="UTF-8"%>
<%String userName = request.getParameter("userName");
String msg = request.getParameter("msg");
out.print("resultVar="+userName+"说:"+msg);
%>

你可能也注意到了,几乎没有改动Flash的代码,只是改动后台语言而已。可以看出用Flash作表示层的程序是具有很强的移植性的,这也是RIA的一大特点。下次我们将谈一谈怎样使用XML对象来实现Flash与服务器端的通信,敬请关注!

点击此处查看最终效果,点击此处下载源代码。

上一篇上一篇: Flash与服务器端通信简介
下一篇下一篇: XML概述
来自文章来自: 本站原创
引用引用通告: 查看所有引用 | 我要引用此文章
标签Tags: Flash8 ActionScript
相关相关日志:
评论: 1 | 引用: 0 | 查看次数: -
引用我来顶你的[2009-03-02 04:12 PM | 无网站 | 无Mail | 222.70.167.161 | 删除 | 取消审核 | 回复回复]
[正在加载评论信息,请稍候...]
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭