获取url参数的方法

来源:互联网 发布:mysql 截断 编辑:程序博客网 时间:2024/06/02 22:59

获取url参数主要有两种方法

第一种是利用字符串的分割方法,将url以“&”和“=”做分割,得到参数数组,然后再利用数组的迭代方法中的filter()方法,筛选并返回我们需要的数据。

function GetQueryString(name) {    //获取url中“?”后边的部分,并将结果以“&”分割成数组    var paras = url.split('?')[1].split('&');    //遍历数组中是否有满足参数条件的数组项    var result = paras.filter(function(item,index,para){  return(item.split('=')[0] == name);   });    //如果有满足条件的,则将数组项中的value值返回    if(result){return (result[0].split('=')[1]);   }}

第二种方法是利用正则表达式,正则表达式的方法就要比上边的方法看起来要简洁很多。借助这个方法,自己也学习了一些正则表达式的应用。

function GetQueryString(name) {   var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i");   var r = "aa=22&bb=12".match(reg);   if (r!=null) return (r[2]); return null;}
首先,(^|&)这里边的 ^ 表示的是匹配项是以 ^ 后边跟随的字符开头的,如果是(^&),那么匹配项的第一个字符必须是&,这里在中间加了一个 | (或)运算符,表示 & 可以有,也可以没有。

参数name后面就是要获取的值,第一个括号里边有一个中括号,中括号里边的表示要匹配的值。

“*”表示匹配前边中括号里边的内容0次或多次(”+“表示一次或多次,”?“表示0次或1次)。

”^&“的意思是匹配开头不是”&“的内容。

第二个括号里的就是在结尾处匹配”&“或者”$“符号,这里如果没有这两个符号结尾也能够正常返回前边所匹配到的内容。

另外一种正则表达式的方法是:

var arr = url.match(/\w+=\w+/gi);

这样得出的结果是各项参数组成的数组,然后再利用数组的迭代方法去处理就好了。

\w 表示大小写字母,数字,下划线


----------------------------------------------------3月29日更新-----------------------------------------------------------------------

今天看《javascript高级程序设计》中的bom章节,讲到了通过location对象获取字符串参数的方法,其中有decodeURLComponent()方法对查询字符串解码,觉得应该记录一下。

function getQueryStringArgs(){ //获取查询字符串,并截掉问号 var qs = (location.search.length>0?location.search.substring(1):""), //存储结果的对象args = {},//分割获取到的字符串,去到每一对值,并放进数组items = qs.length?qs.split("&"):[],item = null,name = null,value = null,i = 0,len = items.length; for(i = 0; i < len; i++){ item = items[i].split("="); name = decodeURIComponent(item[0]); value = decodeURIComponent(item[1]); if(name){ args[name] = value; } } return args; }<p></p>



0 0