使用 FLEX AS3 與 ColdFusion 建立 Remoting
我想大多數的人使用 FLEX 一定都會有與資料庫取得資料的經驗吧,以前我也都是習慣使用 HTTPService 來取得 XML 資料,再把資料放入 DataGrid 中,不過 FLEX ( FLASH ) 還有一個更好的方式,「Remoting」,本篇就在介紹如何使用 FLEX 中的 RemoteObject 來與 ColdFusion 建立資料的傳遞。
FLEX 與 ColdFusion 都是 Adobe 出品的,所以想當然設定方面總是比較偷吃步的,如果今天你使用的是 ASP.net 或是 PHP 那你還必須要建立 GateWay 例如 .net 方面要使用 FX 而 PHP 的部分要使用 AMFPHP。如果你使用的是 ColdFusion 當你後端的程式語言的話,那這些他都幫你準備好了。
安裝 ColdFusion 伺服器 :
相信對這篇有興趣的人應該也都會安裝 ColdFusion 伺服器,如果不會安裝的話也可以參考我其他篇文章,這邊安裝的時候可能有幾的地方要注意一下,第一點就是我並不是安裝 Standalone 的模式,因為我的 ColdFusion 上還運作著 ASP.net 所以我是附屬架設在 IIS SERVER 上的,如果你是使用 Standalone 的朋友後面的設定你要做稍微的調整。
撰寫 CFC Function :
接下來第二個步驟要先在 SERVER 上放上你要接收的程式碼,當然第一步驟我們還是不免俗的來個經典吧!「Helloworld !」
helloworld.cfc
1 2 3 4 5 6 7 <cfcomponent> <cffunction name="sayHellow" access="remote" returntype="string"> <cfargument name="myArgument" type="string" required="yes"> <cfset myResult="Hellow World"> <cfreturn myResult> </cffunction> </cfcomponent>簡單解釋一下這邊是要建立一個 CFC 元件,元件中提供一個方法 sayHellow 回傳定義為字串,實際回傳內容為 " Hellow World "。
接下來把檔案放在 Website 的 Root 資料夾內,如果您跟我一樣是以 IIS 架設的話那根目錄預設是在 C:\Inetpub\wwwroot ,我們在這個目錄下建立一個專門放置元件的資料夾 C:\Inetpub\wwwroot\comp\ ,並且把 helloworld.cfc 放在這個資料夾中,這個部份就大功告成了。
設定 FLEX 專案 :
在設定 FLEX 專案的部分首先我們開啟一個 FLEX 的 Project
給予專案名稱 remotingTest , Server technology 的部分選擇 ColdFusion 並且使用的是 ColdFusion Flash Remoting ,點擊 NEXT 。
首先設定 Web root 的位置,因為我的 ColdFusion Server 並不是放在我的本機而且我並不是安裝 Standalone 版本,所以要先選擇 Deployed to J2EE server ,並且因為我經常性的上傳我已經把 SERVER 的 C:\Inetpub\wwwroot 資料夾對應到我的本機做為 M槽 ,因此我的 Web root 設定為 M:\ ,而 SERVER 端的 IP 瀏覽位置為 http://10.0.1.100/ ,並且取消勾選 ColdFusion WAR is located in Web root ,因為我裝的不是 Standalone 版本,接下來點擊 NEXT 。並點擊 FINISH 便完成設定。
測試專案 :
在設定好了 ColdFusion 以及 FLEX 環境,我們終於可以開始建立 FLEX 程式來得到 SERVER 端的資料首先我們建立一支測試的 FLEX ,其功能相當簡單,使用 RemoteObject 取得 SERVER 上的字串並且放入 LABEL 欄位中。
remotingTest
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="16" creationComplete="init()"> <mx:Script> <![CDATA[ //執行 sayHellow 方法 private function init():void { this.roTest.sayHellow(); } ]]> </mx:Script> <mx:RemoteObject id="roTest" destination="ColdFusion" source="comp.helloworld" result="this.testLabel.text = this.roTest.sayHellow.lastResult"/> <mx:Label id="testLabel" text="尚未取得SERVER資料"/> </mx:Application>
恭喜你成功的取得 SERVER 端的資料,可以接下來進行第二步的使用囉!
Random Posts
Loading…
相關文章 :









你好~小弟我照著版主的方法試了
結果都是顯示尚未取得SERVER資料
請問有可能出錯的地方在哪邊@@ THX
應該不會阿~
你可以貼看看錯誤畫面嗎?
或是你可以直接存取 CFC 檔案看看有沒有資料
我也是出了問題呢~希望能夠幫幫我看看是什麼問題呢~謝謝~!
@Thomas
你有定義接收資料
但是並沒有傳入
好像是這樣子 @@”
我有問題,想請問您~
ColdFusion我有安裝好了。
伺服器是用xampp套件,根目錄設在 C:\xampp\php\www
然後 helloworld.cfc 放在根目錄下。
在flex專案中
Web root 我設 C:\xampp\php\www
root url 我設 http://localhost/
source=”comp.helloworld” 這行程式我有去掉 comp. 了
可是flex都會跑出下面的錯誤訊息
Whitespace is not allowed before an XML Processing Instruction (). remotingTest/src remotingTest.mxml Unknown 1246820277843 32
可能是哪邊沒設定好呢@@?
@ben
看這個情況 雖然我也不知道是為什麼
不過你可以先嘗試看看你的 CFC 是否能正常執行 (用其他 CFM 執行 )
然後檢查一下 FLEX 是否有正確接觸到 CF 的 gateway
相信對這篇有興趣的人應該也都會安裝 ColdFusion 伺服器,如果不會安裝的話也可以參考我其他篇文章
我找不到你所說的其他篇
@Forgot
DEAR 那篇文章之前我放在 BLOGGER 後來被砍掉了 >”<