js获取URL里的参数
Posted 牛奔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js获取URL里的参数相关的知识,希望对你有一定的参考价值。
第一种 通过正则获取URL中指定的参数
/** * 获取指定的URL参数值 * URL:http://www.xxx.com/index?name=123 * 参数:param URL参数 * 调用方法:getParam("name") * 返回值:123 * alert(getParam(‘date‘)); */ function getParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); //search,查询?后面的参数,并匹配正则 var r = location.search.substr(1).match(reg); if (r != null) return decodeURI(decodeURI(r[2])); }
第二种 既可以获取URL中全部参数,也可以获取单个参数
/** * js获取url参数值
* 思路,通过location的search获取url中问号后面的值,字符串过滤掉问号,再通过split方法分割参数集合、循环赋值、匹配对应的参数,最后返回值 * URL:http://www.xxx.com/index?name=123 * 参数:param URL参数 * 调用方法:getUrlParams("name") * 返回值:123 * alert(getUrlParams(‘date‘)); */ function getUrlParams(name) { // 不传name返回所有值,否则返回对应值 var url = window.location.search; if (url.indexOf(‘?‘) == 1) { return false; } url = url.substr(1); url = url.split(‘&‘); var name = name || ‘‘; var nameres; // 获取全部参数及其值 for(var i=0;i<url.length;i++) { var info = url[i].split(‘=‘); var obj = {}; obj[info[0]] = decodeURI(info[1]); url[i] = obj; } // 如果传入一个参数名称,就匹配其值 if (name) { for(var i=0;i<url.length;i++) { for (const key in url[i]) { if (key == name) { nameres = url[i][key]; } } } } else { nameres = url; } // 返回结果 return nameres; }
const url = ‘http://www.abc.com/test.php?id=1&from=index‘; var res = getUrlParams(); var res1 = getUrlParams(‘id‘); console.log(res); // [{id: "1"}, {from: "index"}] console.log(res1); // 1
第三种 获取URL中的参数名及参数值的集合
/** * [获取URL中的参数名及参数值的集合] * 示例URL:http://htmlJsTest/getrequest.html?uid=admin&rid=1&fid=2&name=小明 * @param {[string]} urlStr [当该参数不为空的时候,则解析该url中的参数集合] * @return {[string]} [参数集合] */ function GetRequest(urlStr) { if (typeof urlStr == "undefined") { var url = decodeURI(location.search); //获取url中"?"符后的字符串 } else { var url = "?" + urlStr.split("?")[1]; } 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]] = decodeURI(strs[i].split("=")[1]); } } return theRequest; }
var parms_1 = GetRequest(); 2 console.log(parms_1); // {"uid":"admin","rid":"1","fid":"2","name":"小明"} 3 console.log(parms_1[‘name‘]); // ‘小明‘ 4 var parms_2 = GetRequest(‘http://htmlJsTest/getrequest.html?uid=admin&rid=1&fid=2&name=小明‘); 5 console.log(parms_2); // {"uid":"admin","rid":"1","fid":"2","name":"小明"} 6 console.log(parms_2[‘name‘]); // ‘小明‘
第四种 通过参数名获取url中的参数值
/** * [通过参数名获取url中的参数值] * 示例URL:http://htmlJsTest/getrequest.html?uid=admin&rid=1&fid=2&name=小明 * @param {[string]} queryName [参数名] * @return {[string]} [参数值] */ function GetQueryValue(queryName) { var query = decodeURI(window.location.search.substring(1)); var vars = query.split("&"); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("="); if (pair[0] == queryName) { return pair[1]; } } return null; }
1 var queryVal=GetQueryValue(‘name‘); 2 console.log(queryVal);// 小明
以上是关于js获取URL里的参数的主要内容,如果未能解决你的问题,请参考以下文章