Flex4 读取URL参数

来源:互联网 发布:宋真宗 知乎 编辑:程序博客网 时间:2024/05/19 19:42

第一种方法  

传值方式

http://host:port/index.jsp#UserID=111

//获取传递参数var browser:IBrowserManager=BrowserManager.getInstance();browser.init();var param:Object=URLUtil.stringToObject(browser.fragment, "&");

我用这种方式在3.2下读不到,但4.0的SDK下是没有问题的

第二种方法

http://host:port/index.jsp?UserID=111

为了保持一致性(我们项目中),我做了兼容,也支持

http://host:port/index.jsp?UserID=111

import flash.external.ExternalInterface;         import mx.utils.StringUtil;     public class QueryString    {        public function QueryString()        {            readQueryString();        }                 private var _queryString:String;        private var _all:String;        private var _params:Object;                 public function get queryString():String        {            return _queryString;        }        public function get url():String        {            return _all;        }        public function get parameters():Object        {            return _params;        }                            private function readQueryString():void        {            _params = {};            try            {                _all =  ExternalInterface.call("window.location.href.toString");                var urlParams:String = ExternalInterface.call("window.location.search.substring",1);                                 if(urlParams == null || StringUtil.trim(urlParams).length == 0 || "DEBUG=TRUE" == urlParams.toUpperCase())                {                    var startIndex:int = _all.indexOf("#");                    if(startIndex > -1)                        urlParams = _all.substring(++startIndex);                }                                 _queryString = FounderUtils.base64Decode(urlParams);///*FounderUtils.base64Decode(*/ExternalInterface.call("window.location.search.substring", 1)/*)*/;                if(_queryString)                {                                         var params:Array = _queryString.split('&');                    var length:uint = params.length;                                         for (var i:uint=0,index:int=-1; i<length; i++)                     {                        var kvPair:String = params[i];                        if((index = kvPair.indexOf("=")) > 0)                        {                            var key:String = kvPair.substring(0,index);                            var value:String = kvPair.substring(index+1);                            _params[key] = value;                        }                    }                }            }catch(e:Error) { trace("Some error occured. ExternalInterface doesn't work in Standalone player."); }        }    }

flex Base64编码中如果有汉字,要用 encodeUTFBytes ,使用UTF-8的编码,由其和其它语言交换数据时。
0 0
原创粉丝点击