Recipe 21.5. Handling Flash Remoting Responses


Problem

You want to retrieve a return value from a Flash Remoting method.

Solution

Use a Responder object with call( ).

Discussion

Recipe 21.1 discusses how to use the call( ) method of a NetConnection object to call a Flash Remoting method. The second parameter of that method is designed for specifying how Flash Player should handle responses. If you pass a value of null (as in the examples in that recipe), then no responses are handled. If you want to handle the responses, use a flash.net.Responder object.

The Responder constructor lets you pass it two function references, which handle return values and errors:

var responder:Responder = new Responder(onResult, onError);

When the result function gets called, it's passed one parameter with the value returned by the Flash Remoting method:

private function onResult(returnValue:Datatype):void { }

The error handler method is passed an object with properties that describe the error in greater detail.

The following example makes a call to a Flash Remoting method called getAverages( ) and uses trace( ) to display the values. The getAverages( ) method returns an associative array with two properties called flash and actionscript:

package {     import flash.net.NetConnection;     import flash.net.Responder;     public class Example {         private var _connection:NetConnection;         public function Example(  ) {             _connection = new NetConnection(  );             _connection.connect("http://www.rightactionscript.com/flashremoting/                gateway.php");             var responder:Responder = new Responder(onResult, onError);             _connection.call("FlashSurvey.getAverages", responder);         }         private function onResult(result:Object):void {             trace(result.flash + " " + result.actionscript);         }         private function onError(error:Object):void {             trace(error.description);         }     } }

When returning values from Flash Remoting methods, you should always return types that serialize well; do not return record sets. Instead, you should always convert record sets to arrays of associative arrays. That ensures the greatest interoperability.

See Also

Recipe 21.4




ActionScript 3. 0 Cookbook
ActionScript 3.0 Cookbook: Solutions for Flash Platform and Flex Application Developers
ISBN: 0596526954
EAN: 2147483647
Year: 2007
Pages: 351

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net