js 获取地址栏里面的参数

来源:互联网 发布:linux排序命令 编辑:程序博客网 时间:2024/06/05 08:19
有时我们需要在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']; //IDvar 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 0
原创粉丝点击