zoukankan      html  css  js  c++  java
  • 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的编码,由其和其它语言交换数据时。

  • 相关阅读:
    一套完整的javascript面试题
    遇到的java.lang.NoClassDefFoundError解决了
    Win7下启动Internet信息服务(IIS)管理器
    我的第一个专业博客
    “用NetBeans打开项目时项目名变成红色”问题解决
    Struts2框架实现计算器功能
    MyEclipse移动包到另一个项目时出现错误:Resource is out of sync with the file system.
    制作Javascript弹出窗口技巧九则
    windows 的鼠标事件(Event)
    Javascript使用cookie
  • 原文地址:https://www.cnblogs.com/warrior/p/2248472.html
Copyright © 2011-2022 走看看