2011-12-16 9 views
0

私はFlex Mobile/PHPアプリケーションを開発しようとしていますが、私はAsyncTokenでいくつかの問題に遭遇しています...基本的な文字列を返すだけではありませんか?AsyncTokenは基本文字列を返しますか?

たとえば、私はリクエストから単純な文字列結果を返すだけです。今は実装されているメソッドから基本的な出力文字列を返すことになります。バックエンド部分の工事(PHP)、私はそれのすべてをやった...それは私にいくつかの問題を与えているこのです:

import mx.rpc.AsyncResponder; 
import mx.rpc.events.FaultEvent; 
import mx.rpc.events.ResultEvent; 
protected function button_clickHandler(event:MouseEvent):void 
{ 
    loginResult.token = user_service.login(); 
    loginResult.token.addResponder(new AsyncResponder(onResult,onFault)); 
} 

public function onResult(event:ResultEvent, token:Object):void 
{ 
    // what would i do here?? 
} 

public function onFault(event:FaultEvent,token:Object):void 
{ 
    txtResult.text = event.fault.faultDetail; 
} 

それはかなり簡単です - 任意の提案、または推奨事項はきっと役立つだろう!ありがとうございました!

答えて

1

十分に簡単です。 ResultEvent#resultプロパティには、リモートサービスから返された値が含まれます。あなたがする必要があるのは、それが正しいタイプにキャストされることです(デフォルトではObjectなので)。例えば

、文字列を返す、あなたのサービスメソッドの取り扱い:

public function onResult(event:ResultEvent):void { 
    var s:String = event.result as String; 
} 

同じことは、他のタイプのために行く:

var a:Array = event.result as Array; 

、あるいはより複雑なカスタムクラス:

var instance:MyClass = event.result as MyClass; 

この最後の例は、AMFリモーティングでのみ機能することに注意してください。クライアント側とサーバー側で同じクラス定義を持つ必要があります。あなたのASクラス定義に[RemoteClass(alias="net.riastar.MyClass")]メタデータタグを使用して、互いの存在を知らせる必要があります。これをサーバー側でどのように処理しなければならないかは、そこで使用されている言語によって異なります。

+0

イベントハンドラのシグネチャに別の引数を追加しようとすると、イベントハンドラは常に1つの引数(イベント)を持つため、エラーが発生すると思います。トークンはresultイベントのプロパティであり、返された特定の呼び出しに結果を戻すために複数の呼び出しを行った場合に使用する情報を付加することができます。 –

関連する問題