2011-12-16 2 views
0

Flex Mobile/PHP 응용 프로그램을 개발하려고하는데 AsyncToken에 문제가 있습니다. 기본 문자열 만 반환하지 않습니까?AsyncToken이 기본 문자열을 반환합니까?

예를 들면 ... 요청에서 간단한 문자열 결과를 반환하고 싶습니다. 지금 당장 구현 된 메서드에서 기본 출력 문자열을 반환 할 것입니다. 어떤 제안이나 권고는 확실히 도움이 될 것이다 -

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; 
} 

그것은 매우 간단합니다 : 백엔드 부분 작품 (PHP), 나는 그것은 나에게 몇 가지 문제를주고 그이의 ...이 모든 일을했습니다! 고맙습니다!

답변

1

충분히 쉽습니다. ResultEvent#result 속성에는 원격 서비스에서 반환 한 값이 들어 있습니다. 당신이해야 할 일은 오른쪽 타입으로 던지기 만하면됩니다.

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

이벤트 핸들러에 항상 하나의 인수 (이벤트)가 있으므로 다른 인수를 이벤트 처리기 시그니처에 추가하려고하면 오류가 발생한다고 생각합니다. 토큰은 결과 이벤트의 속성이며, 응답시 특정 호출에 결과를 다시 첨부하기 위해 여러 번 호출 한 경우에 사용할 수있는 정보를 첨부하는 데 사용할 수 있습니다. –

관련 문제