本文共 3757 字,大约阅读时间需要 12 分钟。
最近看一些文档,总结了一些<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 > 转载地址:http://jbfmb.baihongyu.com/