最近看一些文檔,總結了一些<mx:HTTPService>給后臺傳遞參數的方法,列舉如下:
方法1:采用URLVariables對象
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" fontSize="12"
>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
//對提交給后臺的參數進行UTF-8的編碼處理
private function httpEncoding(param:String):String{
return encodeURIComponent(param);
}
private function httpEncoding0(param:String):String{
return param;//encodeURI(param);
}
private function doRequest():void{
btn_do.enabled=false;
var url:String = "http://localhost:8600/grid.jsp";
//以下那樣寫后臺會亂碼,不管是否做URI編碼轉換
//url += "?user="+httpEncoding0("用戶名");
//url += "&psw="+httpEncoding0("密碼");
//trace(url);
srv.url = url;
//srv.send();
//以下這樣寫正常
var params:URLVariables = new URLVariables();
//這個user,psw就是傳入后臺的參數user,jsp就用 request.getParameter("user")來取
params.user = httpEncoding("用戶名");
params.psw = httpEncoding("密碼");
srv.send(params);
}
private function resultHandler(event:ResultEvent):void{
Alert.show("與后臺交互結束,前臺開始取得的數據...","提示信息");
btn_do.enabled=true;
}
]]>
</mx:Script>
<mx:HTTPService id="srv" result="resultHandler(event);"/>
<mx:Panel title="測試與jsp后臺交互" layout="absolute" width="100%" height="90%">
<mx:Button id="btn_do" label="取得數據" click="doRequest();"/>
<mx:Spacer height="1"/>
<mx:DataGrid dataProvider="{srv.lastResult.catalog.product}" width="100%" height="100%" y="28"/>
</mx:Panel>
</mx:Application>
方法2:采用<mx:request/>,同時也演示了mx:State的用法,[來自網上]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:states>
<mx:State name="Logged In">
<mx:SetProperty target="{panel1}" name="width" value="95%"/>
<mx:SetProperty target="{panel1}" name="height" value="95%"/>
<mx:RemoveChild target="{password}"/>
<mx:RemoveChild target="{username}"/>
<mx:RemoveChild target="{label1}"/>
<mx:RemoveChild target="{Submit}"/>
<mx:RemoveChild target="{label2}"/>
<mx:SetProperty target="{panel1}" name="title" value="Members Section"/>
<mx:AddChild relativeTo="{panel1}" position="lastChild">
<mx:Label x="10" y="10" text="Welcome to the Members Section!"/>
</mx:AddChild>
<mx:AddChild relativeTo="{panel1}" position="lastChild">
<mx:Label x="10" y="36" text="Here you can do great things, like join the forums @ Viper Creations!"/>
</mx:AddChild>
<mx:AddChild relativeTo="{panel1}" position="lastChild">
<mx:Label x="10" y="62" text="Label"/>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
]]>
</mx:Script>
<mx:Script>

<
private function checkLogin(evt:ResultEvent):void
{

if(evt.result.loginsuccess == "yes")

{

currentState = "Logged In";

}

if(evt.result.loginsuccess == "no")

{
mx.controls.Alert.show('Invalid username/password');

}
}

]]>

</mx:Script>
<mx:HTTPService id="login_user" result="checkLogin(event)" showBusyCursor="true" method="POST" url="http://www.vipercreations.com/site_admin/login.php" useProxy="false">
<mx:request xmlns="">
<username>
{username.text}
</username>
<password>
{password.text}
</password>
</mx:request>
</mx:HTTPService>
<mx:Panel resizeEffect="Resize" width="250" height="200" layout="absolute" title="Login System" horizontalCenter="0" verticalCenter="-2" id="panel1">
<mx:Label x="10" y="10" text="Username:" id="label1"/>
<mx:TextInput x="10" y="36" id="username"/>
<mx:Label x="10" y="66" text="Password:" id="label2"/>
<mx:TextInput x="10" y="92" id="password" displayAsPassword="true"/>
<mx:Button x="10" y="122" label="Submit" id="Submit" click="login_user.send();"/>
</mx:Panel>
</mx:Application>
posted on 2007-09-11 21:24
飛鳥 閱讀(19734)
評論(2) 編輯 收藏 所屬分類:
FLEX