获取URL参数的几种方式

方式①

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;
		};


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值