原创 Flex HTTPService如何给后台传递参数收藏

新一篇: Flex在线编辑器,只要输入flex代码提交,就可以看到效果 | 旧一篇: flex(通过URLLoader)与后台jsp进行交互的例子,包括中文乱码的处理

最近看一些文档,总结了一些<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>

发表于 @ 2007年05月25日 16:55:00|评论(loading...)|编辑

新一篇: Flex在线编辑器,只要输入flex代码提交,就可以看到效果 | 旧一篇: flex(通过URLLoader)与后台jsp进行交互的例子,包括中文乱码的处理

评论

#Clio 发表于2008-10-24 16:06:29  IP: 195.69.247.*
Man you don't even know how long I've waited for this since disabling my own Movable Type widget (that doesn't work since Haloscan bypasses that code).
发表评论  


登录
Csdn Blog version 3.1a
Copyright © Keren