Java与Flex学习札记(13)-Flex中解析地址栏传递的参数

Java与Flex学习笔记(13)----Flex中解析地址栏传递的参数


       最近做一个激活邮件的功能,没想到越做需要知道的知识点越多,加了很多逻辑判断,也大大锻炼自己的思维能力。现分享其中解析地址栏参数的问题。


       由于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了。


      例如本人做的,测试页面,没有参数时:


Java与Flex学习札记(13)-Flex中解析地址栏传递的参数


     有参数时业务判断:


Java与Flex学习札记(13)-Flex中解析地址栏传递的参数


      还有很多,就不一一列举了,不过是在大牛面前班门弄斧了。


      这是本人学习的结果,允许转载,欢迎交流,但转载务必给出本文章的链接地址:http://blog.csdn.net/youqishini/article/details/7772255,谢谢~