AS3中以post和get方式提交数据
我在08年时发表过一篇“简单的flash与asp.net通信(LoadVars类)”,是AS2的代码,到现在来说,早已过时了,所以再发一篇AS3和asp.net通信的文章。
这里主要介绍在as3中用URLRequest对像来post或get数据到服务器。
post用于大数据量的提交,get用于小数据量的提交。
as3中提交数据:
1、新建一个test.fla,里面有一个按钮"submit",两个文本框"txt1"和"txt2";
再新建一个test.as文件,test.fla中将类指向test.as;
2、文件结构部署完后,开始写逻辑。先定义一个url,用来接收提交的数据:
var url:String = "http://localhost:2240/service.ashx";
3、再构造一个存储数据的URLVariables对像,并添加两个参数aa和bb(等会在.net后台将会获取aa和bb的值),txt1是一个文本框:
var _data:URLVariables = new URLVariables(); _data.aa = txt1.text; _data.bb = txt2.text;
4、接下来再创建一个URLRequest对像,它包含HTTP 请求的所有信息,如目标 URL、请求方法(GET 或 POST)、附加标头信息以及 MIME 类型(例如,当上传 XML 内容时)。
var _request:URLRequest = new URLRequest(); _request.url = url; _request.method = URLRequestMethod.POST; _request.data = _data;
5、有了URLRequest对像后,我们还需要将其发送出去,这时可以用URLLoader来载入URLRequest,这时,请求也就发送出去了。因为URLLoader URL 的数据在下载完成之前不可用,所以要侦听COMPLETE事件来判断请求是否下载完成:
var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE,completeHandler); loader.load(_request);
其实可以不需要用URLLoader,直接使用sendToURL方法将URLRequest发送出去:
sendToURL(_request);
sendToURL只负责发送,发送后不管是否成功,有点类似于UDP哦。
6、最后,验证 URLLoader下载的数据,也就是侦听到COMPLETE后所要执行的方法:
private function completeHandler(evt:Event):void{
if(String(evt.target.data) == "success"){
trace("submit success");
}
else{
trace("submit failed");
}
}
7、到此,as中的逻辑代码都完成了,但运行时会报错,因为没有导入包。
URLVariables、URLRequest、URLRequestMethod、URLLoader、sendToURL都是flash.net包下的,所以要导入“import flash.net.*;”。
Event、MouseEvent都是flash.events包下的,所以要导入“import flash.events.*;”(也可以分别将包导入)。
因为我的按钮是画的,转换成了元件,所以我的test类需要继承MovieClip,因此要flash.display.MovieClip包的支持。
flash中的发送功能完成了,再来看怎样在asp.net中接收发过来的数据。
service.ashx文件的内容:
如果是以post提交过来的,就用Request.Form[];如果是用get提交过来的,就用Request.QueryString[];或者直接Request[],不用管是post还是get。
public void ProcessRequest(HttpContext context)
{
string name = context.Request.Form["aa"];
string password = context.Request.Form["bb"];
context.Response.ContentType = "text/plain";
if (string.IsNullOrEmpty(name) && string.IsNullOrEmpty(password))
{
context.Response.Write("success");
}
}
如果以上的步骤使你的AS代码报错,可以参考test.as文件中完整的代码:
package {
import flash.net.*;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.MovieClip;
public class test extends MovieClip {
public function test():void {
submit.addEventListener(MouseEvent.CLICK,postForm);
}
private function postForm(evt:MouseEvent):void {
var url:String = "http://localhost:22405/service.ashx";
var _data:URLVariables = new URLVariables();
_data.aa = txt1.text;
_data.bb = txt2.text;
var _request:URLRequest = new URLRequest();
_request.url = url;
_request.method = URLRequestMethod.POST;
_request.data = _data;
//sendToURL(_request);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE,completeHandler);
loader.load(_request);
//loader.load(new URLRequest(url + "?aa=11&bb=22"));
}
private function completeHandler(evt:Event):void{
if(String(evt.target.data) == "success"){
trace("submit success");
}
else{
trace("submit failed");
}
}
}
}
小齊暈菜
睇唔明
- 评论
-
- [使用Ctrl+Enter键可以直接提交]
表情图标
Advertise
Category
Time Counter
离十一还有
Recent Article
- 1.工作笔记:AS3加载外部图片,有加载百分比
- 2.document.documentElement和document.body的区别
- 3.100种增加网站流量的方法
- 4.用div+css模拟表格对角线
- 5.如何做一个好的技术型领导
- 6.苍井空是谁?
- 7."心态"新解
- 8.程序员特有的9个坏习惯
- 9.AS3入门之简单Loading效果
- 10.系统问题:浏览器无法打开png图片
- 11.AS3中以post和get方式提交数据
- 12.defaultTextFormat和setTextFormat()区别
- 13.AS3中超方便地遍历xml
- 14.pv3d中物体常用的移动属性
- 15.开源Flash 3D引擎Papervision3d
- 16.as3 判断鼠标滚轮前滚或后滚
- 17.js:行向上替换滚动效果
- 18.为什么要清净?(禅与佛)
- 19.扩展window.setTimeout方法
- 20.收集2010的搞笑短句



