Flex读取URL参数

第一种方法  

传值方式

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的编码,由其和其它语言交换数据时。

posted @ 2011-11-14 15:30  骨头  阅读(4747)  评论(0编辑  收藏  举报