获得当前页面的url
- window.location.herf
window.location.herf
静态html文件js读取url参数
- location.search; //获取url中"?"符后的字串
location.search; //获取url中"?"符后的字串
下边为转载的相应的技术
在ajax应用流行时,有时我们可能为了降低服务器的负担,把动态内容生成静态html页面或者是xml文件,供客户端访问!但是在我们的网站或系统中往住页面中某些部分是在后台没有进行修改时,其内容不会发生变化的。但是页面中也往往有部分内容是动态的更新的,比如一个新闻页面,新闻内容往往生成了之后就是静态的,但是新闻的最新评论往往是变化的,在这个时候有几种解决方案:
1、重新生成该静态页面,优点是用户访问时页面上的肉容可以实现全静态,不与服务器程序及数据库后端打交道!缺点是每次用户对页面任何部分更新都必须重新生成。
2、js调用请求动态内容,优点是静态页面只生成一次,动态部分才动态加载,却点是服务器端要用输出一段js代码并用js代码输出网页内容,也不利于搜索引擎收录。
3、ajax调用动态内容,和js基本相似,只是与服务器交互的方式不同!并且页面显示不会受到因动态调用速度慢而影响整个页面的加载速度!至于ajax不利于搜索收录,当然在《ajax in acation》等相关书籍中也介绍有变向的解决方案!
4、在服务器端ssl动态内容,用服务器端优化及缓存解决是时下最流行的方法!
对于第二种和第三种方法都是我最青睐的静态解决方法,适合以内容为主的中小型网站。那么在有时候可能会有js读取url参数的需求,事实证明的确也有很多时候有这种需求,特别是在胖客户端的情况下!以前也写过这样的代码,其实原理很简单就是利用javascript接口提供location对像得到url 地址,然后通过分析url以取得参数,以下是我收录的一些优秀的url参数读取代码:
一、字符串分割分析法。
这里是一个获取URL+?带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET
函数:
- <script>
- function GetRequest()
- {
- var url = location.search; //获取url中"?"符后的字串
- var theRequest = new Object();
- if(url.indexOf("?") != -1)
- {
- var str = url.substr(1);
- strstrs = str.split("&");
- for(var i = 0; i < strs.length; i ++)
- {
- theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
- }
- }
- return theRequest;
- }
- </script>
<script>
function GetRequest()
{
var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if(url.indexOf("?") != -1)
{
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++)
{
theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
}
}
return theRequest;
}
</script>
然后我们通过调用此函数获取对应参数值:
- <script>
- var Request=new Object();
- Request=GetRequest();
- var 参数1,参数2,参数3,参数N;
- 参数1=Request['参数1'];
- 参数2=Request['参数2'];
- 参数3=Request['参数3'];
- 参数N=Request['参数N'];
- </script>
<script>
var Request=new Object();
Request=GetRequest();
var 参数1,参数2,参数3,参数N;
参数1=Request['参数1'];
参数2=Request['参数2'];
参数3=Request['参数3'];
参数N=Request['参数N'];
</script>
以此获取url串中所带的同名参数
二、正则分析法。
- function GetQueryString(name)
- {
- var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
- var r = window.location.search.substr(1).match(reg);
- if (r!=null) return unescape(r[2]); return null;
- }
- alert(GetQueryString("参数名1"));
- alert(GetQueryString("参数名2"));
- alert(GetQueryString("参数名3"));