JavaScript:获取url的querystring参数

一 获取url的querystring参数 获取url的querystring参数的两种方法如下: 1 1 方法一:正则匹配 获取url中的参数function g

一. 获取url的querystring参数

获取url的querystring参数的两种方法如下:

1.1 方法一:正则匹配

//获取url中的参数

function getQueryString(name) {

var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", i); // 匹配目标参数

var result = window.location.search.substr(1).match(reg); // 对querystring匹配目标参数

if (result != null) {

return decodeURIComponent(result[2]);

} else {

return null;

}

}

对于 http://localhost/index.html?q1=abc&q2=efg&q3=h

的url,获取 q1

参数值的方法如下:

var q1 = getQueryString('q1'); // abc

1.2 方法二:split

function getQueryString() {   

var qs = location.search.substr(1), // 获取url中"?"符后的字串

args = {}, // 保存参数数据的对象

items = qs.length ? qs.split("&") : [], // 取得每一个参数项,

item = null,

len = items.length;

for(var i = 0; i < len; i++) {

item = items[i].split("=");

var name = decodeURIComponent(item[0]),

value = decodeURIComponent(item[1]);

if(name) {

args[name] = value;

}

}

return args;

}

对于 http://localhost/index.html?q1=abc&q2=efg&q3=h

的url,获取 q1

参数值的方法如下:

var qs = getQueryString();  

var q1 = qs["q1"]; // abc

console.log(q1);

用上面的getQueryString()方法能很好的解决获取url的querystring参数问题。就

上面两种getQueryString()方法都能很好地解决获取url的querystring参数问题。就此顺便整理一下Location对象,方便日后学习参考。

二. Location对象的属性

备注:以 http://localhost:80/dir/index.html?q1=abc&q2=efg&q3=h#anchor

为例:

属性定义示例
hash返回URL中的hash(#后跟零或多个字符串)#anchor
host相当于hostname + port,即:主机名(域名)+端口号localhost:80
hostname主机名(域名)localhost
href当前页面的完整URLhttp://localhost:80/dir/index.html?q1=abc&q2=efg&q3=h#anchor
pathnameURL中的目录和文件名/dir/index.html
port端口号80
protocal协议http:
search查询字符串。这个字符以问号开头?q1=abc&q2=efg&q3=h

location的这8个属性都是可读写的。

其中,改变location.href会跳转到新的URL页面,而修改location.hash会跳到当前页面中锚点位置。

每次修改window.location的属性(hash除外),页面都会以新的URL重新加载,并在浏览器的历史纪录中生成一条新纪录。

三. Location对象的方法

方法说明
assign(url)打开新的URL,并在浏览器的历史纪录中生成一条记录。
replace(url)打开新的URL,但是不会在浏览器的历史纪录中生成新纪录。
reload(force)刷新当前页面。force为true时从服务器端重新加载;为false时从浏览器缓存中重新加载。默认值false。

其中, location.assign(url)

的效果跟下列两行代码的效果完全一样:

window.location = url;

location.href = url;

位于 location.reload()

调用之后的代码可能会也可能不会执行,这取决于网络延迟或系统资源等因素。因此,最好将 location.reload()

放在代码的最后一行。

未登录用户
全部评论0
到底啦