从url中获取参数值是che程序开发过程中的常用需求,偶然得闲,便抽空研究了一下javasrcipt下,获取参数的办法(JAVA中也类似)。
首先看url的规范:
URL组成:
protocol :// hostname[:port] / path / [;parameters][?query]#fragment协议://主机名[:端口]/ 路径/[:参数] [?查询]#Fragment一个规范的url参数总是在【?query】部分,以 “变量名=值”这样的形式存在;
这样就给我们取值提供了一个思路:
第一种方法:利用正则表达式,从url中获取我们需要的对应的参数的值
1 function getUrlPramByName(name){ 2 var url = window.location.search; //获取url中?之后的内容 3 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); 4 if(url){ 5 var r = url.substr(1).match(reg); 6 7 if (r != null) { 8 return decodeURI(r[2]); 9 }else{10 return null; 11 }12 }; 13 };
可以自己在浏览器控制台执行下,这种方法只能单独使用,获取自己需要的那个参数值得变量
第二种方法: 利用字符串操作将所需要的值全部提出来
function getAllUrlPram(){ var url = window.location.search; //获取url中?后面的内容 if(url && url.indexOf("?")!= -1){ url = url.substr(1); //去掉前面的? var arr = url.split("&"); //将字符串以&为分隔符转化为数组 var obj = {}; //定义一个空对象 for(var i=0;i
这样我们可以定义一个在String原型链上的通用方法了:
String.prototype.getUrlParms = function(){ var index = this.indexOf("?"); if(index !=-1){ var str = this.substr(index+1); var arr = str.split("&"); //将字符串以&为分隔符转化为数组 var obj = {}; //定义一个空对象 for(var i=0;i
最终对字符串执行getUrlParms()方法后,就会得到一个包含所有需要的参数和参数对应的值得对象了;