昨天写完上一节没什么事就在论坛到处逛,偶然发现一个帖子,是经典前斑竹“手工感情”写的,其中总结了FLASH与ASP通讯的三种常见方法,包括loadVariables,LoadVars和XML,跟贴还有一些比较深入的讨论,我觉得很好,大家对哪种方式有兴趣的话不妨看一下前辈的帖子,火山这里就不再唠叨了。只有一种方式他们没提到,就是getURL,下面我就着重讲一下这种通讯方式。 继续我的教程,getURL的特别之处在于它能打开一个新的ASP网页,并使这个网页接收到传递的变量,这样ASP网页就能根据这个变量进行各种设置和显示了,我的FLASH BLOG中就利用了这个技术。遗憾的是,getURL无法指定传递变量的个数,它会非常机械的把同一层级下的所有变量都传递给ASP,如果你把调用getURL函数的语句和大量其它AS语句都混在一起,势必会传递大量垃圾变量,解决的方法是把要传递的变量和调用getURL函数的语句都写在一个独立的MC中。下面我简单演示一下它的用法: 1,先在同一目录下建立一个“geturl.asp”文件和“geturl.fla”文件。 <%@LANGUAGE="JAVASCRIPT"%> 3,再在“geturl.fla”中建立一个按钮“anniu_btn”,并在贞上写代码: var neirong1_flash = "neirong1"; 这样前期工作就完成了,下面我们来进行一系列对比性的测试: ①直接发布测试,当我们点击按钮的时候,会发现新打开了“geturl.asp”,页面显示: 内容1的值是neirong1 看来我们确实接收到变量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 再观察浏览器URL后缀: ?neirong3_flash=neirong3&neirong1%5Fflash=neirong1&neirong2%5Fflash=neirong2 可以发现多了一个“neirong3_flash=neirong3&”,而且它没进行URL编码,这点火山也不太理解,为什么把变量直接写在ASP文件调用语句中就不进行URL编码了呢?希望有前辈高手点明,先替大家一起谢谢了。 这里需要重点提示的是:以前见有些人说“getURL”函数可以通过在调用的文件名后加参数来传递指定的变量,这其实是视觉上的误导。getURL永远都是传递所有的变量,只不过那些垃圾变量,如果你不测试的话,无法看到它们而已。 ④最后再送大家一个大礼来给这篇教程画上一个完美的句号,这个礼物是“测试的思考方式”: 变量有三个 所以测试的可能性一共就有:3*2*2=12种,我只做了4种代表性的,其它的留给读者自己。 呵呵,怎么样,这种思想很容易理解吧?可惜道理大家都懂,实践总是很难! |