我正在尝试开发一个Flex Mobile / PHP应用程序,而且我遇到了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;
}
这非常简单 - 任何建议或建议肯定会有所帮助!谢谢!
答案 0 :(得分:1)
够容易。 ResultEvent#result属性包含远程服务返回的值。您需要做的就是将其强制转换为正确的类型(因为默认情况下它是一个Object)。
例如,处理返回String的服务方法:
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")]
元数据标记让他们知道彼此的存在。如何在服务器端处理这个问题取决于那里使用的语言。