<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> <![CDATA[ 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>