Flex与后台交互的4种方法
一、HTTPService
程序代码:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initializeHandler(event)">
- <mx:Script>
- <!--[CDATA[
- private function initializeHandler(event:Event):void {
- countriesService.send();
- }
- private function changeHandler(event:Event):void {
- statesService.send();
- }
- ]]>
- </mx:Script>
- <!-- 载 入纯静态的xml数据 -->
- <mx:HTTPService id="countriesService" url="http://www.rightactionscript.com/states/xml/countries.xml" />
- <!-- 载入由php生成的xml数据 -->
- <mx:HTTPService id="statesService" url="http://www.rightactionscript.com/states/xml/states.php">
- <!-- 以下标签就是要发送到服务端的数据了,可以这样理解:有一个名为 country的变量,它的值为 花括号{}里的内容 -->
- <mx:request>
- <country>{country.value}</country>
- </mx:request>
- </mx:HTTPService>
- <mx:VBox>
- <!-- 此 控件的数据由第一个<mx:HTTPService/>控件接收的内容提供,并且由这个ComboBox控制着第二个ComboBox所要显 示的内容 -->
- <mx:ComboBox id="country" dataProvider="{countriesService.lastResult.countries.country}"
- change="changeHandler(event)" />
- <!-- 下面的ComboBox已经绑定了 {statesService.lastResult.states.state},随它的数据改变而改变 -->
- <mx:ComboBox dataProvider="{statesService.lastResult.states.state}" />
- </mx:VBox>
- </mx:Application>
二、URLLoader
程序代码:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initializeHandler(event)">
- <mx:Script>
- <!--[CDATA[
- private var _countriesService:URLLoader;
- private var _statesService:URLLoader;
- private function initializeHandler(event:Event):void {
- _countriesService = new URLLoader();
- _countriesService.addEventListener(Event.COMPLETE, countriesCompleteHandler);
- _countriesService.load(new URLRequest("http://www.rightactionscript.com/states/xml/countries.xml"));
- _statesService = new URLLoader();
- _statesService.addEventListener(Event.COMPLETE, statesCompleteHandler);
- XML.ignoreWhitespace = true;
- }
- private function countriesCompleteHandler(event:Event):void {
- var xml:XML = new XML(_countriesService.data);
- country.dataProvider = xml.children();
- }
- private function statesCompleteHandler(event:Event):void {
- var xml:XML = new XML(_statesService.data);
- state.dataProvider = xml.children();
- }
- private function changeHandler(event:Event):void {
- var request:URLRequest = new URLRequest("http://www.rightactionscript.com/states/xml/states.php");
- var parameters:URLVariables = new URLVariables();
- parameters.country = country.value;
- request.data = parameters;
- _statesService.load(request);
- }
- ]]-->
- </mx:Script>
- <mx:VBox>
- <mx:ComboBox id="country" change="changeHandler(event)" />
- <mx:ComboBox id="state" />
- </mx:VBox>
- </mx:Application>
三、WebService 方法一
程序代码:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initializeHandler(event)">
- <mx:Script>
- <!--[CDATA[
- private function initializeHandler(event:Event):void {
- statesService.getCountries();
- }
- private function changeHandler(event:Event):void {
- statesService.getStates(country.value);
- }
- ]]-->
- </mx:Script>
- <mx:WebService id="statesService"
- wsdl="http://www.rightactionscript.com/states/webservice/StatesService.php?wsdl">
- <mx:operation name="getCountries" />
- <mx:operation name="getStates" />
- </mx:WebService>
- <mx:VBox>
- <mx:ComboBox id="country"
- dataProvider="{statesService.getCountries.lastResult}" change="changeHandler(event)" />
- <mx:ComboBox dataProvider="{statesService.getStates.lastResult}" />
- </mx:VBox>
- </mx:Application>
四、WebService 方法二
程序代码:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initializeHandler(event)">
- <mx:Script>
- <![CDATA[
- private function initializeHandler(event:Event):void {
- statesService.getCountries.send( );
- }
- private function changeHandler(event:Event):void {
- statesService.getStates.send( );
- }
- ]]-->
- </mx:Script>
- <mx:WebService id="statesService" wsdl="http://www.rightactionscript.com/states/webservice/StatesService.php?wsdl">
- <mx:operation name="getCountries" />
- <mx:operation name="getStates">
- <mx:request>
- <country>{country.value}</country>
- </mx:request>
- </mx:operation>
- </mx:WebService>
- <mx:VBox>
- <mx:ComboBox id="country"
- dataProvider="{statesService.getCountries.lastResult}" change="changeHandler(event)" />
- <mx:ComboBox dataProvider="{statesService.getStates.lastResult}" />
- </mx:VBox>
- </mx:Application>