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