由于flex默认包装的页面是html页面,所以与jsp不同的是参数是传递在“#”后面,而jsp是在“?”后面,所以这点得弄清。
要解析参数,首先需要把地址栏链接参数链(即“#”后面的参数对)给获取下来,这个有很多方法,比如调用JavaScript的 ExternalInterface.call()方法,本人用的是flex的静态类BrowserManager获得的,代码如下所示:
- /**
- * 获取地址栏参数链
- * */
- public function getAllParams():String{
- var bm:IBrowserManager=BrowserManager.getInstance();
- bm.init();
- return bm.fragment
- }
此方法返回的是地址栏参数对。
下面需要对此参数对进行分割并保存在一个object对象里,代码如下所示:
- /**
- * 接收并解析浏览器地址栏url的信息
- * */
- public functiongetParams():Object {
- var params:Object= {};
- var query:String=getAllParams();
- if(query) {
- var pairs:Array = query.split("&");
- for(var i:uint=0; i < pairs.length; i++) {
- var pos:int = pairs[i].indexOf("=");
- if(pos != -1) {
- var argname:String = pairs[i].substring(0, pos);
- var value:String = pairs[i].substring(pos+1);
- params[argname] = value;
- }
- }
- }
- return params;
- }
此方法返回的是一个object对象,如果参数链不为空,那么取值很简单,就是:
- Var obj:Object= getParams();
- Var email:String=obj.email;
然后再加入自己的业务逻辑就ok了。