js 获取地址栏里面的参数

有时我们需要在js文件中用URL传来的参数,但是Javascript是客户端执行的脚本语言,而Session是服务器端的对象,我们不能直接取得Session中的值。那么,我们该如何在JS文件中获取URL中的参数呢?

下面介绍两种方式,一种是字符串拆分法,另一种是正则匹配法。

第一种:字符串拆分法

这种方式是通过location.search方法取得URL中的参数部分,然后再进一步处理得到的。具体代码如下

//获取地址栏里(URL)传递的参数
function GetRequest() {
    //url例子:default.aspx?id=1&name=abc;
    var url = location.search; //获取url中"?"符以及其后的字串
    var urlRequest = new Object();
    if(url.indexOf("?") != -1)//url中存在问号,也就说有参数。
    { 
        var str = url.substr(1);
        strs = str.split("&");
        for(var i = 0; i < strs.length; i ++)
        { 
          urlRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
        }
    }
    return urlRequest;
}

调用代码如下:

var paramRequest = new Object();
//获取url中的参数
paramRequest = GetRequest();

var id = Request['id']; //ID
var name = Request['name']; //名字

第二种:正则匹配法

这种方法其实原理和上一种方法类似,都是从URL中提取,只是提取的方法不同而已

function queryString(name) {
   var reg = new RegExp("(?:\\?|&){1}" + name + "=([^&]*)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) { 
        return unescape(r[2]);
    }
    return null;
}   

调用方法如下:

var id = queryString("id");

以上就是获取地址栏参数的两种方法。


URL即:统一资源定位符 (Uniform Resource Locator, URL)
完整的URL由这几个部分构成:
scheme://host:port/path?query#fragment
scheme:通信协议
常用的http,ftp,maito等

host:主机
服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。

port:端口号
整数,可选,省略时使用方案的默认端口,如http的默认端口为80。

path:路径
由零或多个"/"符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

query:查询
可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用"&"符号隔开,每个参数的名和值用"="符号隔开。

fragment:信息片断
字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。(也称为锚点.)

对于这样一个URL

http://www.abc.com/index.html?ver=1.0&id=6#imhere

我们可以用javascript获得其中的各个部分

1, window.location.href
整个URl字符串(在浏览器中就是完整的地址栏)
本例返回值: http://www.maidq.com/index.html?ver=1.0&id=6#imhere

2,window.location.protocol
URL 的协议部分
本例返回值:http:

3,window.location.host
URL 的主机部分
本例返回值:www.maidq.com

4,window.location.port
URL 的端口部分
如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符
本例返回值:""

5,window.location.pathname
URL 的路径部分(就是文件地址)
本例返回值:/fisker/post/0703/window.location.html

6,window.location.search
查询(参数)部分
除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值
本例返回值:?ver=1.0&id=6

7,window.location.hash
锚点
本例返回值:#imhere





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值