| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
没有相关文章

FLASH与ASP通信原理入门           

FLASH与ASP通信原理入门

作者:jimohuos… 来源:幽幽天空 更新:2007-4-28 18:58:29 错误报告 我要投稿

昨天写完上一节没什么事就在论坛到处逛,偶然发现一个帖子,是经典前斑竹“手工感情”写的,其中总结了FLASH与ASP通讯的三种常见方法,包括loadVariables,LoadVars和XML,跟贴还有一些比较深入的讨论,我觉得很好,大家对哪种方式有兴趣的话不妨看一下前辈的帖子,火山这里就不再唠叨了。只有一种方式他们没提到,就是getURL,下面我就着重讲一下这种通讯方式。
手工感情斑竹的教程:http://bbs.blueidea.com/viewthread.php?tid=1113968&highlight=
借这个教程,我们再来一起悼念一下这位无私奉献的前辈——蓝色每一位无私奉献者都不应当被遗忘!

继续我的教程,getURL的特别之处在于它能打开一个新的ASP网页,并使这个网页接收到传递的变量,这样ASP网页就能根据这个变量进行各种设置和显示了,我的FLASH BLOG中就利用了这个技术。遗憾的是,getURL无法指定传递变量的个数,它会非常机械的把同一层级下的所有变量都传递给ASP,如果你把调用getURL函数的语句和大量其它AS语句都混在一起,势必会传递大量垃圾变量,解决的方法是把要传递的变量和调用getURL函数的语句都写在一个独立的MC中。下面我简单演示一下它的用法:

1,先在同一目录下建立一个“geturl.asp”文件和“geturl.fla”文件。
2,在“geturl.asp”中输入下面的代码:

<%@LANGUAGE="JAVASCRIPT"%>
<%
//接收变量
var neirong1=Request("neirong1_flash");
var neirong2=Request("neirong2_flash");
var neirong3=Request("neirong3_flash");
//显示变量内容
Response.Write("内容1的值是"+neirong1+"<br>");
Response.Write("内容2的值是"+neirong2+"<br>");
Response.Write("内容3的值是"+neirong3);
%>

3,再在“geturl.fla”中建立一个按钮“anniu_btn”,并在贞上写代码:

var neirong1_flash = "neirong1";
var neirong2_flash = "neirong2";
anniu_btn.onRelease = function() {
  getURL("geturl.asp", "_blank", "get");
};

这样前期工作就完成了,下面我们来进行一系列对比性的测试:

①直接发布测试,当我们点击按钮的时候,会发现新打开了“geturl.asp”,页面显示:

内容1的值是neirong1
内容2的值是neirong2
内容3的值是undefined

看来我们确实接收到变量neirong1_flash和neirong2_flash了,由于neirong3_flash我们在FLASH中没有定义,所以ASP中得到undefined。现在我们注意观察ASP网页的URL后缀:

?neirong1%5Fflash=neirong1&neirong2%5Fflash=neirong2

这个后缀经过了URL编码,翻译过来其实是:

?neirong1_flash=neirong1&neirong2_flash=neirong2

它的格式大家是不是觉得非常熟悉呢?答对了!就是我们在前面一直强调的“变量/值”配对,它的变量传递原理与LV遵循的是同一规则!怎么样?现在体会到什么是一通百通,触类旁通了吧:)需要解释的一点是,当传递多个“变量/值”对的时候,他们之间用“&”分隔,与TXT中的数据格式又相同了。

②把“geturl.fla”中“getURL”函数中的“get”传递方式改为“post”再测试一下,你会发现ASP网页在浏览器URL中的后缀没有了,但网页显示结果不变。

③现在我们再把“geturl.fla”中“getURL”函数改成下面的形式:

getURL("geturl.asp?neirong3_flash=neirong3", "_blank", "get");

发布测试,我们会发现点击按钮后,打开的ASP网页显示内容发生了变化,neirong3接收到了值,网页显示内容如下:

内容1的值是neirong1
内容2的值是neirong2
内容3的值是neirong3

再观察浏览器URL后缀:

?neirong3_flash=neirong3&neirong1%5Fflash=neirong1&neirong2%5Fflash=neirong2

可以发现多了一个“neirong3_flash=neirong3&”,而且它没进行URL编码,这点火山也不太理解,为什么把变量直接写在ASP文件调用语句中就不进行URL编码了呢?希望有前辈高手点明,先替大家一起谢谢了。

这里需要重点提示的是:以前见有些人说“getURL”函数可以通过在调用的文件名后加参数来传递指定的变量,这其实是视觉上的误导。getURL永远都是传递所有的变量,只不过那些垃圾变量,如果你不测试的话,无法看到它们而已。

④最后再送大家一个大礼来给这篇教程画上一个完美的句号,这个礼物是“测试的思考方式”:

变量有三个
变量传递的写法有两种:直接写在文件名后或者在时间轴声明并赋值
变量传递的方式有两种:get和post

所以测试的可能性一共就有:3*2*2=12种,我只做了4种代表性的,其它的留给读者自己。

呵呵,怎么样,这种思想很容易理解吧?可惜道理大家都懂,实践总是很难!

上一页  [1] [2] [3] [4] [5] [6] [7] [8] 

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。