昨天寫完上一節(jié)沒什么事就在論壇到處逛,偶然發(fā)現(xiàn)一個帖子,是經(jīng)典前斑竹“手工感情”寫的,其中總結(jié)了FLASH與ASP通訊的三種常見方法,包括loadVariables,LoadVars和XML,跟貼還有一些比較深入的討論,我覺得很好,大家對哪種方式有興趣的話不妨看一下前輩的帖子,火山這里就不再嘮叨了。只有一種方式他們沒提到,就是getURL,下面我就著重講一下這種通訊方式。 手工感情斑竹的教程:http://bbs.blueidea.com/viewthread.php?tid=1113968&highlight= 借這個教程,我們再來一起悼念一下這位無私奉獻的前輩——藍色每一位無私奉獻者都不應(yīng)當(dāng)被遺忘!
繼續(xù)我的教程,getURL的特別之處在于它能打開一個新的ASP網(wǎng)頁,并使這個網(wǎng)頁接收到傳遞的變量,這樣ASP網(wǎng)頁就能根據(jù)這個變量進行各種設(shè)置和顯示了,我的FLASH BLOG中就利用了這個技術(shù)。遺憾的是,getURL無法指定傳遞變量的個數(shù),它會非常機械的把同一層級下的所有變量都傳遞給ASP,如果你把調(diào)用getURL函數(shù)的語句和大量其它AS語句都混在一起,勢必會傳遞大量垃圾變量,解決的方法是把要傳遞的變量和調(diào)用getURL函數(shù)的語句都寫在一個獨立的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"); //顯示變量內(nèi)容 Response.Write("內(nèi)容1的值是"+neirong1+"<br>"); Response.Write("內(nèi)容2的值是"+neirong2+"<br>"); Response.Write("內(nèi)容3的值是"+neirong3); %>
3,再在“geturl.fla”中建立一個按鈕“anniu_btn”,并在貞上寫代碼:
var neirong1_flash = "neirong1"; var neirong2_flash = "neirong2"; anniu_btn.onRelease = function() { getURL("geturl.asp", "_blank", "get"); };
這樣前期工作就完成了,下面我們來進行一系列對比性的測試:
①直接發(fā)布測試,當(dāng)我們點擊按鈕的時候,會發(fā)現(xiàn)新打開了“geturl.asp”,頁面顯示:
內(nèi)容1的值是neirong1 內(nèi)容2的值是neirong2 內(nèi)容3的值是undefined
看來我們確實接收到變量neirong1_flash和neirong2_flash了,由于neirong3_flash我們在FLASH中沒有定義,所以ASP中得到undefined,F(xiàn)在我們注意觀察ASP網(wǎng)頁的URL后綴:
?neirong1%5Fflash=neirong1&neirong2%5Fflash=neirong2
這個后綴經(jīng)過了URL編碼,翻譯過來其實是:
?neirong1_flash=neirong1&neirong2_flash=neirong2
它的格式大家是不是覺得非常熟悉呢?答對了!就是我們在前面一直強調(diào)的“變量/值”配對,它的變量傳遞原理與LV遵循的是同一規(guī)則!怎么樣?現(xiàn)在體會到什么是一通百通,觸類旁通了吧:)需要解釋的一點是,當(dāng)傳遞多個“變量/值”對的時候,他們之間用“&”分隔,與TXT中的數(shù)據(jù)格式又相同了。
②把“geturl.fla”中“getURL”函數(shù)中的“get”傳遞方式改為“post”再測試一下,你會發(fā)現(xiàn)ASP網(wǎng)頁在瀏覽器URL中的后綴沒有了,但網(wǎng)頁顯示結(jié)果不變。
③現(xiàn)在我們再把“geturl.fla”中“getURL”函數(shù)改成下面的形式:
getURL("geturl.asp?neirong3_flash=neirong3", "_blank", "get");
發(fā)布測試,我們會發(fā)現(xiàn)點擊按鈕后,打開的ASP網(wǎng)頁顯示內(nèi)容發(fā)生了變化,neirong3接收到了值,網(wǎng)頁顯示內(nèi)容如下:
內(nèi)容1的值是neirong1 內(nèi)容2的值是neirong2 內(nèi)容3的值是neirong3
再觀察瀏覽器URL后綴:
?neirong3_flash=neirong3&neirong1%5Fflash=neirong1&neirong2%5Fflash=neirong2
可以發(fā)現(xiàn)多了一個“neirong3_flash=neirong3&”,而且它沒進行URL編碼,這點火山也不太理解,為什么把變量直接寫在ASP文件調(diào)用語句中就不進行URL編碼了呢?希望有前輩高手點明,先替大家一起謝謝了。
這里需要重點提示的是:以前見有些人說“getURL”函數(shù)可以通過在調(diào)用的文件名后加參數(shù)來傳遞指定的變量,這其實是視覺上的誤導(dǎo)。getURL永遠都是傳遞所有的變量,只不過那些垃圾變量,如果你不測試的話,無法看到它們而已。
④最后再送大家一個大禮來給這篇教程畫上一個完美的句號,這個禮物是“測試的思考方式”:
變量有三個 變量傳遞的寫法有兩種:直接寫在文件名后或者在時間軸聲明并賦值 變量傳遞的方式有兩種:get和post
所以測試的可能性一共就有:3*2*2=12種,我只做了4種代表性的,其它的留給讀者自己。
呵呵,怎么樣,這種思想很容易理解吧?可惜道理大家都懂,實踐總是很難!
經(jīng)典論壇討論: http://bbs.blueidea.com/thread-2701824-1-1.html
出處:藍色理想
責(zé)任編輯:moby
上一頁 LV與ASP綜合運用 下一頁
◎進入論壇Flash專欄版塊參加討論
|