一個例子簡單的描述了如何通過GET方法向伺服器端的ASP發送請求:
| 代碼如下 |
複製代碼 |
_root. pushAction = function(URL) { this.loadVariables(URL, "GET"); } var ask = true; var pushURL = "http://localhost/test/return.asp?ask="+ ask; pushAction (pushURL); _root.onEnterFrame = fuction(){ trace(_root.output); } |
這裡首先定義了一個名為pushAction的函數,在loadVariables函數中使用了GET參數。然後定義了一個名為ask的布爾型變數,用來向伺服器傳遞變數。最後使用pushAction函數向伺服器上的一個名為return的ASP頁面發送GET請求。如果需要對這樣的請求作出處理,在 ASP中,URL行的分析結果存在於Request對象中,比如下例:
| 代碼如下 |
複製代碼 |
return.asp <%@ Language="JScript" %> <% //聲明並定義接受請求的變數 var str_getask= Request.QueryString("ask"); //聲明並定義返回資訊變數 var str_Msg = "Sorry! Your request tread awry."; //如果接受到的變數為true,則返回成功訊息 if (str_getask == "true"){ str_Msg = "OK! Your request succeed!"; } Response.write("output=" + str_Msg); |
%> 這樣,一個名字為output,值為str_Msg的變數就發送回Flash Player中,可以在flash中以output的名字引用這個變數。當然我們必須注意伺服器在處理這個過程中是需要時間的,因此最後那個 onEnterFrame用來測試是否有變數返回.
loadVariables提供了一種簡單的方法讓我們可以從伺服器端的ASP或者PHP頁面載入變數,除了使用GET方法,它還可以使用POST 方法將用戶端提交的資料傳遞給伺服器。然而在處理大量用戶端與伺服器端互動的資訊時,使用過多的loadVariables語句會讓整個程式的維護性和可讀性變得複雜。在Flash MX的Action中,新增加了一個LoadVars的對象,並將它和XML,XMLSocket對象一起歸納於Client/Server對象之下。 LoadVars 對象是 loadVariables 動作的替代方法,它能夠提供一種更好的結構向伺服器發送和返回資訊。一個典型的LoadVars對象使用的例子如下:
| 代碼如下 |
複製代碼 |
//構造一個新的LoadVars對象 myload = new LoadVars(); //設定myload的動作,以便伺服器驗證 myload.action = "post"; //驗證和伺服器串連的函數 myload.onLoad = function(success) { //如果和伺服器成功串連則… if (success) { //如果驗證動作成功則… if (this.conn == "1") { //將返回對象中的output變數賦值給情境中var為output的Dynamic Text框 _root.output = this.output; } } else { //如果和伺服器串連不成功則返回失敗訊息,需要檢查路徑是否正確 _root.output = "Can't connect to Server"; } }; //Dynamic Text的初始值為一個等待訊息 _root.output = "Waiting for response..."; |
//將myload下的變數發送到伺服器端,並將伺服器返回的資料結果放在myload對象中
| 代碼如下 |
複製代碼 |
myload.sendAndLoad("http://localhost/test/return.asp", myload, "post"); //myload.sendAndLoad("http://localhost:8001/test/return.php",myload, "post"); |
在情境中以一個var名為output的Dynamic Text框來接受來自伺服器的訊息。使用LoadVars,我們可以利用sendAndLoad方法將一個LoadVars的實體下的所有變數發送出去,並將伺服器返回的資料結果儲存到一個目標對象中,其中conn,output都是從伺服器發送回來的,我們還利用了其onLoad事件函數來檢驗其是否將資訊發送到了伺服器頁面,再利用從伺服器傳回來的資料(this.conn)來驗證資訊是否正確。伺服器頁面的代碼如下:
ASP return.asp:
| 代碼如下 |
複製代碼 |
<%@Language="JScript"%> <% var str_Msg; var action; var conn; action = Request.Form("action"); if (action == "post"){ str_Msg = "OK! return a Msg to you!"; conn = 1; } Response.write("conn=" + conn + "&output=" + str_Msg); %> PHP return.php: <php $action = $HTTP_POST_VARS["action"]; if ($action == "post") { $str_Msg = "OK! return a Msg to you!"; $conn = 1; } echo "conn=" . $conn . "&output=" . $str_Msg; ?>;
|
如果本例執行成功,則會在Flash Player中出現成功畫面,如圖所示。如果失敗,則返回失敗訊息(一般都是路徑出錯)