使用LoadVars實現Flash與服務器通信

這篇教程簡單講解如何使用LoadVars實現Flash與HTTP Service通信。通過本例的學習,我們將瞭解怎樣整合LoadVars對象和HTTP Service開發Flash RIAs的基本流程。

從Flash Player 6開始,可以使用LoadVars對象來實現Flash與後臺通信。同loadVariables函數一樣,它只能接收MIME格式的字符串變量。而且遇 到特殊字符時,必須進行URL編碼。

LoadVars對象通過其sendAndLoad方法將對象中的屬性變量發送(send)到指定的 URL,同時載入(load)服務端器的輸出變量並將其放入 目標對象中。當然,發送和載入這兩個過程可以分開進行。這就是LoadVars對象比loadVariables函數強大之處,另外一個強大之處在於:載入變量時,還可以通過LoadVars對象的 onLoad事件來判斷載入的結果是成功還是失敗。請看下面的例子。

請在舞臺上添加名爲 name_ti 的 TextInput 實例,名爲 msg_ta,result_ta 的 TextArea 實例和名爲 send_btn 的 Button 實例。將下面的 ActionScript 添加到時間軸的第 1 幀:

var submitListener:Object = new Object();
submitListener.click = function(evt:Object) {
	var result_lv:LoadVars = new LoadVars();
	var send_lv:LoadVars = new LoadVars();
	send_lv.userName = name_ti.text;
	send_lv.msg = msg_ta.text;
	send_lv.sendAndLoad("http://www.riafan.com/service/echo.asp", result_lv, "POST");
	result_lv.onLoad = function(success:Boolean) {
		if (success) {
			result_ta.text = result_lv.resultVar;
		} else {
			result_ta.text = "連接到服務器失敗";
		}
	}
}
send_btn.addEventListener("click", submitListener);

說明:當用戶單擊下面示例中Login按鈕實例時,將創建兩個LoadVars對象:send_lv和result_lv。send_lv對象從name_ti和msg_ta實例複製名稱並將數據發送到echo.asp。此腳本的結果將載入result_lv對象,服務器響應則顯示在TextArea實例 (result_ta) 中。

前面說過,任何服務器端編程語言,只要按[變量/值]配對的格式輸出純文本文件就能和Flash連接。接下來我們就來看這個實例的服務器端代碼。

ASP版:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Dim userName,msguser
Name=Request.Form("userName")
msg=Request.Form("msg")
Response.Write "resultVar="&userName&"說:"&msg
%>

ASP.net版:

<%@ Page Language="C#"%>
<%
string userName,msg;
userName = Request.Form["userName"].ToString();
msg = Request.Form["msg"].ToString();
Response.Write("resultVar="+userName+"說:"+msg);
%>

PHP版:

<?php
$userName=$_POST['userName'];
$msg=$_POST['msg'];
echo "resultVar=".$userName."說:".$msg
?>

CFM版:

<cfparam name="userName" default="" type="any">
<cfparam name="msg" default="" type="any">
<cfoutput>resultVar=#userName#說:#msg#</cfoutput>

JSP版:

<%@ page language="java" pageEncoding="UTF-8"%>
<%String userName = request.getParameter("userName");
String msg = request.getParameter("msg");
out.print("resultVar="+userName+"說:"+msg);%>

你可能也注意到了,幾乎沒有改動Flash的代碼,只是改動後臺語言而已。可以看出用Flash作表示層的程序是具有很強的移植性的,這也是RIA的一大特點。下次我們將談一談怎樣使用XML對象來實現Flash與服務器端的通信,敬請關注!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章