通过url传递参数时,如何获取全部参数

一、通过url传递参数时,如何获取全部参数
在angularJS中的代码块:

$scope.getUrlParams = function (url){   
        var params = {}, arr; 
        var hash = url.slice(url.indexOf('?')+1).split('&'); 
        for(var i = 0; i < hash.length; i++) { 
            arr = hash[i].split('='); 
            params[arr[0]] = arr[1]; 
        } 
        return params; 
    }

通过返回的JSON对象可以直接取出对应参数的值。
例如取出url中名为”errormsg”的参数值:

$scope.getResultFromInterface = function(result){
var params = $scope.getUrlParams(result);
var errormsg = params.errormsg;

二、获取url传递的参数中含有中(日)文的参数值
url在传递含有中(日)文的参数时,会先通过encode()方法进行编码。
之后接收方再通过decode()方法进行解码,以符合url规范。
本例中,如果”errormsg”含有中文,则接受时应对其进行解码:

var errormsg = decode(params.errormsg);

三、遇到的一个未解决问题:
在接收url传递的参数时,之前考虑的是运用正则表达式的方法来获取。
通过遍历”=”以及其左右值来取出”A=a”形式的参数集。
正则表达式代码如下:

$scope.getParamValue = function(url, param){
        var pattern = /(\w+)=(\w+)|(\w+)=\[[\s\S]*\]/g;
        var parames = {};
        // a代表url,b代表等号左边,c代表等号右边
        url.replace(pattern, function(a, b, c){
            if(a.match(/(\w+)=\[[\s\S]*\]/g)){
                var d=a.split("=");
                parames[d[0]]=d[1];
            } else {
                parames[b] = c;
            }
        });
        return parames[param];
    };

pattern的正则表达式指的是所有“A=a”的形式。
给对象parames赋值时也是A=a”的形式,不过等号左右的值替换。
if(a.match(/(\w+)=[[\s\S]*]/g)){ 那这个判断的意思是 匹配所有的“A=a”的形式么?
是的话岂不是永远不会走else?
那”&”符号和”?”符号这些东西不用管么?

该方法在接收英文参数时是正确的,但是接收encode后的(或者没有encode)中文字符就会出现接收不到。
目前正在寻找答案中。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值