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

来源:互联网 发布:卖les衣服的淘宝商城 编辑:程序博客网 时间:2024/06/09 18:14

一、通过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
原创粉丝点击