一、正则法:
1 function getQueryString(name) { 2 var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); 3 var r = window.location.search.substr(1).match(reg); 4 if (r != null) { 5 return unescape(r[2]); 6 } 7 return null; 8 } 9 // 这样调用:10 alert(GetQueryString("参数名1"));11 alert(GetQueryString("参数名2"));12 alert(GetQueryString("参数名3"));
二、split拆分法:
1 function GetRequest() { 2 var url = location.search; //获取url中"?"符后的字串 3 var theRequest = new Object(); 4 if (url.indexOf("?") != -1) { 5 var str = url.substr(1); 6 strs = str.split("&"); 7 for(var i = 0; i < strs.length; i ++) { 8 theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); 9 }10 }11 return theRequest;12 }13 var Request = new Object();14 Request = GetRequest();15 // var 参数1,参数2,参数3,参数N;16 // 参数1 = Request['参数1'];17 // 参数2 = Request['参数2'];18 // 参数3 = Request['参数3'];19 // 参数N = Request['参数N'];
三、又见正则:
通过JS获取url参数,这个经常用到。比如说一个url:http://wwww.jb51.net/?q=js,我们想得到参数q的值,那可以通过以下函数调用即可。
1 function GetQueryString(name) { 2 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); 3 var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配 4 var context = ""; 5 if (r != null) 6 context = r[2]; 7 reg = null; 8 r = null; 9 return context == null || context == "" || context == "undefined" ? "" : context; 10 }11 alert(GetQueryString("q"));
四、单个参数的获取方法:
1 function GetRequest() {2 var url = location.search; //获取url中"?"符后的字串3 if (url.indexOf("?") != -1) { //判断是否有参数4 var str = url.substr(1); //从第一个字符开始 因为第0个是?号 获取所有除问号的所有符串5 strs = str.split("="); //用等号进行分隔 (因为知道只有一个参数 所以直接用等号进分隔 如果有多个参数 要用&号分隔 再用等号进行分隔)6 alert(strs[1]); //直接弹出第一个参数 (如果有多个参数 还要进行循环的)7 }8 }