Flex与后台交互的4种方法 HTTPService、URLLoader、WebService详解
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
FlashVars(单向传递)
- A.传递:在<embed 中设置 FlashVars=”name1=value1&name2=value2”
- B.接受:在as中写入 var value1=application.parameters.name1 即可
分类:
Flex