获取URL参数的几种方式

来源:互联网 发布:平安银行淘宝联名卡 编辑:程序博客网 时间:2024/05/24 22:45

方式①

function getUrlParam(key) {var reg = new RegExp(key + '=([^&]*)');var results = location.href.match(reg);return results ? results[1] : null;}


方式②

/** * 获取url参数值 * @method getUrlParam * @param {String} paramName 参数名 * @return {String} 参数值 */getUrlParam = function(paramName) {var href = window.location.href;var url = decodeURI(href);var idx = url.indexOf("?");var params = url.substring(idx + 1);if (params) {params = params.split("&");for (var i = 0; i < params.length; i += 1) {var param = params[i].split("=");if (param[0] == paramName) {//完善获取url参数的逻辑var pArr = [];for (var k = 1, len = param.length; k < len; k++) {pArr.push(param[k]);}var p = pArr.join('=');var idx1 = p.indexOf("#");if (idx1 != -1) {p = p.substring(0, idx1);}return p;}}}};

方式③

/** * 通过正则表达式获取url参数 * 支持锚点#与自定义参数分割形式 */getUrlParamObject = function(external, split) {var reg = /^.*\?{1}(.*)/;var result = [];var href = window.location.href;var url = decodeURI(href);var param = reg.exec(url);if (param == null || param.length == 1 || param[1] == '')return result;var reg2 = /(?:([^&#]*?)=([^&#]*))[&#]?/g;//  匹配前面参数param[1].replace(reg2, function(a, b, c) {analyseParam(b, c);});/*var reg3 = /[&#](?:([^&#]*?)=([^&#]*))$/g;//   匹配最末尾参数param[1].replace(reg3,function(a,b,c){analyseParam(b,c);});*/function analyseParam(key, value) {if (/=/.test(value) && external) {var reg4 = new RegExp('(?:([^' + split + ']*?)=([^' + split + ']*))' + split + '', 'g');var sub = [];value.replace(reg4, function(a, b, c) {sub.push({key: b,value: c,type: 'string'});});var reg5 = new RegExp('' + split + '(?:([^' + split + ']*?)=([^' + split + ']*))$', 'g');value.replace(reg5, function(a, b, c) {sub.push({key: b,value: c,type: 'string'});});result.push({key: key,type: 'object',value: sub});} else {result.push({key: key,type: 'string',value: value});}}return result;};


1 0