經(jīng)過前兩節(jié)的學習,我們已經(jīng)熟悉了LV類的使用,以及ASP的基本格式和輸入輸出了,F(xiàn)在我們就來看看這兩樣東西是怎么融合到一起的。還記得我在講LV類的基本知識時所舉的TXT那個例子嗎?LV與TXT通訊時,TXT中的數(shù)據(jù)需要寫成“變量/值”配對的格式,其實必須寫成這種格式并不是由TXT決定的,它是由LV的特性決定的,也就是說,LV與文本文件通訊需要“變量/值”這種數(shù)據(jù)格式。ASP文件其實也是文本文件,ASP與LV進行通訊的時候,它所輸出的內容格式也就必須遵循“變量/值”配對的規(guī)則。
好吧,讓我們從代碼中來一個直觀的體驗吧,我們還用“★LV類基礎講解”那一節(jié)中舉的那個傳遞多個變量的例子,還記得那個TXT文件的名字吧:“l(fā)v_shiyan.txt”,好的,現(xiàn)在我們直接把“l(fā)v_shiyan.txt”改成“l(fā)v_shiyan.asp”,同樣把“l(fā)v_shiyan.fla”代碼中shiyan_lv.load("lv_shiyan.txt")這句里的lv_shiyan.txt也替換為lv_shiyan.asp,然后直接在FLASH編輯環(huán)境中按Ctrl+Enter測試影片,我們發(fā)現(xiàn)輸出窗口輸出:“戰(zhàn)勝LoadVar類!/戰(zhàn)勝ASP!/我能做FLASH留言板了!”,跟修改之前一樣。 昏!這樣也可以。窟@算什么?是FLASH與ASP的通訊嗎?怎么不需要IIS都行?那是FLASH與TXT通訊嗎?可人家的后綴名明明是“.asp”嘛。科鋵嵾@里火山也不是很明白,但我更偏向于把它理解成FLASH與ASP的通訊,只是因為這個ASP文件中沒有ASP語句,不需要IIS支持就能顯示內容而已。如果你非要討個說法,最保守的回答是:FLASH與文本文件的通訊:)
呵呵:)好了,不忽悠大家了。上面那一段搞不清楚沒關系,其實我從TXT過渡到ASP的目的還是想更直觀的告訴大家:FLASH顯示ASP中的內容跟TXT是一致的。只要我們想辦法把ASP輸出的數(shù)據(jù)格式搗鼓成“變量/值”配對就行了!
在TXT中又繞了這么長時間,大家著急了吧,好的,現(xiàn)在我要玩真的了,ASP正式登場: 首先我們把“l(fā)v_shiyan.asp”中的內容改成如下形式:
★LV與ASP通訊原理<br> <%@LANGUAGE="JAVASCRIPT"%> <% Response.Write("&neirong1_txt=戰(zhàn)勝LoadVar類!&neirong2_txt=戰(zhàn)勝ASP!&neirong3_txt=我能做FLASH留言板了!&"); %>
我們先在IIS下運行一下,網(wǎng)頁中會顯示如下內容:
★LV與ASP通訊原理 &neirong1_txt=戰(zhàn)勝LoadVar類!&neirong2_txt=戰(zhàn)勝ASP!&neirong3_txt=我能做FLASH留言板了!&
恩。吭趺茨敲囱凼彀,恭喜你,答對了,這不正是“l(fā)v_shiyan.txt”中的內容嘛!只不過“★”后的標題換成這節(jié)的標題了:)好的,那么,聰明的你,現(xiàn)在是否已經(jīng)預料到我下一步想干什么呢?恭喜你,你又答對了,你怎么那么聰明呢,下一步當然就是在FLASH中顯示這些數(shù)據(jù)拉。說干就干,回到“l(fā)v_shiyan.fla”的編輯環(huán)境中,再次按Ctrl+Enter測試影片。哈哈,成功了!輸出窗口顯示:“戰(zhàn)勝LoadVar類!/戰(zhàn)勝ASP!/我能做FLASH留言板了!”,哈哈哈哈——哎!說你呢,你笑什么?我高興是因為我終于又把你忽悠了,你笑什么呢?看看我們的“l(fā)v_shiyan.asp”文件,我們明明已經(jīng)寫了ASP語句了啊,可怎么還是不需要IIS支持就能直接在FLASH編輯環(huán)境中顯示呢?難道我們的FLASH軟件是在IIS下運行的嗎?這當然不可能,那到底怎么會事。亢俸伲海┖昧,不頭痛大家了,其實,在我們第一次把“l(fā)v_shiyan.txt”直接改成“l(fā)v_shiyan.asp”并運行影片測試的時候,“l(fā)v_shiyan.asp”中的數(shù)據(jù)已經(jīng)被讀入內存,后來盡管我們又把“l(fā)v_shiyan.asp”中的內容改成了ASP特有的輸出格式,但由于文件名字沒改變,運行影片測試的時候,F(xiàn)LASH還是會直接從內存中提取已經(jīng)存儲過的內容,而上次的內容正好不需要IIS就能顯示,碰巧而已:)
那如何顯示新內容呢?我們只需要利用隨機函數(shù)給ASP傳遞一個沒有實際意義的變量就可以了。我們可以把加載ASP的語句改成下面的樣子:
shiyan_lv.load("lv_shiyan.asp?bianliang="+random(9999));
現(xiàn)在再次在FLASH中測試影片,發(fā)現(xiàn)輸出窗口顯示以下提示:
加載失敗 Error opening URL "file:///E|/flashlianxi/flash與asp練習/FLASH與ASP通訊入門級教程/lv_shiyan.asp?bianliang=5624"
恩。坑钟袉栴}了,不是說“bianliang”沒有實際意義嗎?怎么會導致“Error opening URL”呢?呵呵:)其實這里說的“沒有實際意義”是針對ASP來說的,更確切的說,是針對瀏覽器的,還記得我在“★ASP中基本的輸入輸出”一節(jié)中講的GET傳遞方式嗎?如果忘了一會兒可以回去復習下。其實我的建議是你先跟著我的進度把每節(jié)徹底弄明白,等我寫完后,再通讀一邊,然后你就完全可以自己動手做個留言板了。接上面的,既然這個“沒有實際意義”不是針對FLASH的,那FLASH肯定就不認識了,它會把“l(fā)v_shiyan.asp?bianliang=5624”全部當成文件名,所以當然找不到這個文件了。
是該撥開云霧見晴天的時候了。現(xiàn)在我們先在“l(fā)v_shiyan.fla”中添加一個動態(tài)文本域,并命名為“wenben_txt”,然后把輸出代碼改動一下,讓本來在輸出窗口顯示的內容顯示在動態(tài)文本域里,具體改動是把下面第一行代碼換成第二行: trace("您載入的文本內容是:"+neirong1+"/"+neirong2+"/"+neirong3); wenben_txt.text = neirong1+"/"+neirong2+"/"+neirong3; 好了,最后再發(fā)布“l(fā)v_shiyan.swf”和“l(fā)v_shiyan.html”到與ASP文件相同的文件夾下,并在IIS下運行“l(fā)v_shiyan.html”,你會看到SWF的動態(tài)文本域里顯示“戰(zhàn)勝LoadVar類!/戰(zhàn)勝ASP!/我能做FLASH留言板了!”,現(xiàn)在你終于可以放心的歡呼了:我們終于可以把ASP輸出的內容顯示在FLASH里了,哈哈……。
先喝口水吧,一眨眼快兩個小時了,我怎么寫的那么慢啊,加油加油!上面講的其實是ASP怎么向FLASH傳遞資料,這不是真正意義上的交互,交互是雙方互動的,現(xiàn)在我們就來看看FLASH怎么向ASP傳遞資料。在此之前請保證你還記得我在“★ASP中基本的輸入輸出”一節(jié)中講的ASP是怎么接收一個變量的,我們還用那一節(jié)所用的“asp_jichu.asp”文件,當時我是通過GET方式直接在瀏覽器地址欄中對“neirong_wangzhi”進行賦值的,并且測試證明ASP確實通過Request接收到了這個變量的值,F(xiàn)在我們就是要讓FLASH做地址欄做的事,我們要通過FLASH對“neirong_wangzhi”進行賦值。
在正式開始之前,我們還有以下工作要完成:
1,在“l(fā)v_shiyan.fla”中再添加一個按鈕,命名為“tijiao_btn”。 2,把“wenben_txt”這個動態(tài)文本域改成輸入文本域,取消HTML輸出,并更名為:“shuru_txt”。 3,再添加一個動態(tài)文本域,用來接收從ASP傳回的資料,命名為:“shuchu_txt”。 4,把“asp_jichu.asp”中的內容改成下面的內容: ★ASP中基本的輸入輸出<br> <%@LANGUAGE="JAVASCRIPT"%> <% var neirong; //獲取從FLASH傳遞過來的變量 neirong=Request("neirong_flash"); //輸出要返回到FLASH中的內容 Response.Write("&fanhui_asp=哈,你輸入的內容已經(jīng)傳遞給ASP,并且又已經(jīng)從ASP返回到FLASH了,你輸入的內容是:"+neirong); %> 5,最后把“l(fā)v_shiyan.fla”中的代碼改成下面的內容: System.useCodepage = true; var shiyan_lv = new LoadVars(); tijiao_btn.onRelease = function() { //獲得輸入的文本內容,并把這個內容記錄在變量“neirong_flash”中 //這里相當于已經(jīng)對變量“neirong_flash”進行了賦值 shiyan_lv.neirong_flash = shuru_txt.text; //將LV對象中儲存的所有變量都傳遞給ASP,不過這里我們只設定了一個,就是我們的“neirong_flash” //向ASP傳遞成功后,我們再把從ASP傳遞回來的變量還儲存在“shiyan_lv”對象中 shiyan_lv.sendAndLoad("asp_jichu.asp?bianliang="+random(9999), shiyan_lv, "post"); }; shiyan_lv.onLoad = function(chenggong) { if (chenggong) { //輸出文本內容 shuchu_txt.text = shiyan_lv.fanhui_asp; } else { //輸出文本內容 shuchu_txt.text = "加載失敗"; } };
呼呼,改的東西真不少啊,先不講代碼了,直接發(fā)布測試一下吧,先有個直觀的認識:在輸入文本框中輸入“我要做FLASH留言板”,然后點擊提交按鈕,你就會看到在動態(tài)文本框“shuchu_txt”中馬上就會顯示:“哈,你輸入的內容已經(jīng)傳遞給ASP,并且又已經(jīng)從ASP返回到FLASH了,你輸入的內容是:我要做FLASH留言板”。這個例子的源文件也可以直接在下面下載。
小提示:如果你在瀏覽器中直接點擊刷新不能正確顯示更新后的頁面和內容,請按如下方式設置IE瀏覽器:→工具→Internet選項→設置→鉤選“每次訪問此頁時檢查”。這樣我們以后就可以直接利用刷新來測試,不用再擔心IIS刷新和內存問題了。
最后我們來對測試過程中的數(shù)據(jù)流程做一個系統(tǒng)的分析:
- 用戶在FLASH的輸入文本框“shuru_txt”輸入“我要做FLASH留言板”
- 通過“shiyan_lv.neirong_flash = shuru_txt.text;”這句代碼把用戶輸入的內容儲存在“shiyan_lv”對象的“neirong_flash”
- 通過“shiyan_lv”對象的“sendAndLoad”方法將它記錄的變量都傳遞給指定的ASP文件
- 在ASP文件中通過“neirong=Request("neirong_flash");”這句代碼獲得從FLASH的“shiyan_lv”對象傳遞過來的變量“neirong_flash”
- ASP接收變量內容后調用Response對象的Write方法利用傳遞過來的變量內容以“變量/值”配對的格式輸出需要返回FLASH的新內容
- FLASH在調用“shiyan_lv”對象的“sendAndLoad”方法發(fā)送變量時就已經(jīng)指定“shiyan_lv”本身接收返回的內容
- “shiyan_lv”接收到新返回的內容,并根據(jù)其“變量/值”配對的格式,將新內容儲存在“shiyan_lv.fanhui_asp”中
- 當新返回的內容在FLASH中加載完成后,調用“shiyan_lv”對象的onLoad事件
- 通過“shuchu_txt.text = shiyan_lv.fanhui_asp;”這句代碼在輸出文本框中顯示新返回的內容
經(jīng)過這個分析,相信大家應該可以從總體上有一個理性的認識了吧。
最后還需要重點強調的幾點是:
- LV對象在調用“sendAndLoad”方法發(fā)送變量的時候,會把LV對象中儲存的所有變量都發(fā)送給ASP。
- ASP在接收LV對象傳遞過來的變量時,只需要在Request中使用與FLASH中相同的變量名字就可以了。
- ASP輸出的資料一定要使用“變量/值”配對的格式,因為只有輸出成這種格式,F(xiàn)LASH才能像處理TXT一樣將ASP輸出的資料分別記錄在幾個變量并保存在指定接收資料的LV對象中。
- 如果我們想向FLASH傳遞兩個或者更多變量,我們可以在FLASH中這樣寫:(以傳遞三個變量為例)
shiyan_lv.bianliang1_flash="bianliang1"; shiyan_lv.bianliang2_flash="bianliang2"; shiyan_lv.bianliang3_flash="bianliang3"; shiyan_lv.sendAndLoad("asp_jichu.asp?bianliang="+random(9999), shiyan_lv, "post");
- 傳遞大量資料時,必須使用POST方法。
- 如果我們想在FLASH中接收到多個從FLASH傳遞過來的變量,就按TXT的處理方式來就OK了。
呼呼,喘口氣,這一節(jié)終于寫完了。本來計劃下次直接寫“LV與ASP綜合運用”的,但現(xiàn)在想想,還是很有必要加上一節(jié)“ASP操作數(shù)據(jù)庫入門”,請繼續(xù)關注。有什么好的意見也可以提一下,希望通過大家的共同努力讓這篇教程能讓菜鳥以最快的速度,最少的障礙自己制作出真正屬于自己的FLASH留言板。
還記得我們向ASP傳遞的那個無意義的變量“bianliang”嗎?既然我們向ASP傳遞了,那ASP就應該能接收的到,有興趣的朋友可以在“asp_jichu.asp”中加一個接收變量的語句,測試一下效果。改動后的ASP代碼如下:
★ASP中基本的輸入輸出<br> <%@LANGUAGE="JAVASCRIPT"%> <% var neirong; var canshu; //獲取網(wǎng)址中變量的內容 neirong=Request("neirong_flash"); //獲取無意義的參數(shù) canshu=Request("bianliang"); //顯示變量內容 Response.Write("&fanhui_asp=哈,你輸入的內容已經(jīng)傳遞給ASP,并且又已經(jīng)從ASP返回到FLASH了,你輸入的內容是:"+neirong+"。你傳遞的無意義的參數(shù)是:"+canshu); %>
測試后發(fā)現(xiàn)真的可以接收到一個數(shù)字呢,而且每次點提交這個數(shù)字幾乎都不一樣,在0-9999之間變化?磥砦覀兇_實接收到FLASH傳遞過來的隨機變量了,可傳遞的時候,地址欄里怎么沒顯示呢?是因為這次我們采用了“POST”傳遞方式,這種方式用來傳遞大量資料,是不會在地址欄中顯示變量和它的值的。
FLASH與ASP交互實例:demo01.rar
出處:藍色理想
責任編輯:moby
上一頁 ASP中基本的輸入輸出 下一頁 ASP操作數(shù)據(jù)庫入門
◎進入論壇Flash專欄版塊參加討論
|