我正在尝试开发一个Flex移动/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;
}
这是相当直接的-任何建议,或推荐肯定会有所帮助!谢谢你!
很简单。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")]
元数据标记来让它们知道彼此的存在。在服务器端如何处理这个取决于那里使用的语言。