首頁 > ColdFusion, FLEX > 使用 FLEX AS3 與 ColdFusion 建立 Remoting

使用 FLEX AS3 與 ColdFusion 建立 Remoting

2009年2月10日  瀏覽次數 : 3,615

我想大多數的人使用 FLEX 一定都會有與資料庫取得資料的經驗吧,以前我也都是習慣使用 HTTPService 來取得 XML 資料,再把資料放入 DataGrid 中,不過 FLEX ( FLASH ) 還有一個更好的方式,「Remoting」,本篇就在介紹如何使用 FLEX 中的 RemoteObject 來與 ColdFusion 建立資料的傳遞。

image3

FLEX 與 ColdFusion 都是 Adobe 出品的,所以想當然設定方面總是比較偷吃步的,如果今天你使用的是 ASP.net 或是 PHP 那你還必須要建立 GateWay 例如 .net 方面要使用 FX 而 PHP 的部分要使用 AMFPHP。如果你使用的是 ColdFusion 當你後端的程式語言的話,那這些他都幫你準備好了。

image

安裝 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

image1

給予專案名稱 remotingTest , Server technology 的部分選擇 ColdFusion 並且使用的是 ColdFusion Flash Remoting ,點擊 NEXT 。

image2

首先設定 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

?View Code ACTIONSCRIPT
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 端的資料,可以接下來進行第二步的使用囉!

image3

Random Posts

Loading…

:: 把這篇好文推到書籤網站與更多人分享吧 ::
  • funp
  • Hemidemi
  • YahooKimo
  • Google
  • udn
  • Haohao
  • Live

相關文章 :

Ausir ColdFusion, FLEX , , , , ,

  1. killerbear
    2009年3月30日17:16 | #1

    你好~小弟我照著版主的方法試了
    結果都是顯示尚未取得SERVER資料
    請問有可能出錯的地方在哪邊@@ THX

  2. 2009年3月30日21:32 | #2

    killerbear :

    你好~小弟我照著版主的方法試了
    結果都是顯示尚未取得SERVER資料
    請問有可能出錯的地方在哪邊@@ THX

    應該不會阿~

    你可以貼看看錯誤畫面嗎?
    或是你可以直接存取 CFC 檔案看看有沒有資料

  3. Thomas
    2009年4月19日23:19 | #3

    我也是出了問題呢~希望能夠幫幫我看看是什麼問題呢~謝謝~!

    ?View Code ACTIONSCRIPT
    1
    2
    3
    4
    5
    6
    
    [RPC Fault faultString="Unable to invoke CFC - The MYARGUMENT parameter to the sayHellow function is required but was not passed in." faultCode="Server.Processing" faultDetail="For details, turn on Robust Exception Information in the ColdFusion Administrator"]
    	at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:220]
    	at mx.rpc::Responder/fault()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:53]
    	at mx.rpc::AsyncRequest/fault()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:103]
    	at NetConnectionMessageResponder/statusHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\NetConnectionChannel.as:569]
    	at mx.messaging::MessageResponder/status()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\MessageResponder.as:222]
  4. 2009年4月20日08:18 | #4

    @Thomas

    你有定義接收資料
    但是並沒有傳入

    好像是這樣子 @@”

  5. ben
    2009年7月6日03:16 | #5

    我有問題,想請問您~
    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

    可能是哪邊沒設定好呢@@?

  6. 2009年7月6日11:12 | #6

    @ben

    看這個情況 雖然我也不知道是為什麼
    不過你可以先嘗試看看你的 CFC 是否能正常執行 (用其他 CFM 執行 )
    然後檢查一下 FLEX 是否有正確接觸到 CF 的 gateway

  7. Forgot
    2009年9月30日21:16 | #7

    相信對這篇有興趣的人應該也都會安裝 ColdFusion 伺服器,如果不會安裝的話也可以參考我其他篇文章

    我找不到你所說的其他篇

  8. 2009年10月2日11:07 | #8

    @Forgot

    DEAR 那篇文章之前我放在 BLOGGER 後來被砍掉了 >”<

  1. 2009年2月11日17:24 | #1