views:

346

answers:

1

Good day everybody.

I've doing a bit of "training" at working with Flex and Remote Data from XML files.

This is my HTTPService

<mx:HTTPService id="loginData" url="com-handler/basic.xml" showBusyCursor="true">
</mx:HTTPService>

I have a button and when its clicked its call a function, that calls loginData.send and does a little IF condition, that IF condition relies on the data returned by loginData.

The condition doesn't work because its called right next to the loginData.send, and .send method still didn't returned the values from the XML file. But if you click it a second time a second after the first click the IF condition works.

So to deal with i wanted to do a eventListener so that when loginData.send returned the data from the XML it fires up the IF condition. But i don't know how to do it.

Can you help me?

+1  A: 

The send method of HTTPService returns an AsyncToken, to which you can add a Responder, as well as arbitrary data. So in the click handler of your Button:

var responder:IResponder = new Responder(myResultFunction, myFaultFunction)
var token:AsyncToken = myService.send();
token.addResponder(responder);

Additionally, the MXML can declare a result handler:

<mx:HTTPService id="myService" result="myResultHandler(event)"/>

One interesting aspect of AsyncToken is that it is a dynamic object, meaning you ca apply arbitrary properties to it:

var responder:IResponder = new Responder(myResultFunction, myFaultFunction)
var token:AsyncToken = myService.send();
token.addResponder(responder);
token.myArbitraryProperty = "Whatever";
token.anotherProperty = someObject;

Now, in the myResultFunction you can access event.token.myArbitraryProperty for use in conditionals or whatever you may need.

Joel Hooks
It worked pretty well. I've just added the IF condition the the result handler, and Plinn Christmas.
Fábio Antunes
Forgot to say... Thank you.
Fábio Antunes