获取url中参数的值或者中文值

本文介绍了三种在JavaScript中处理URL参数,特别是中文字符的方法:一是使用字符串操作获取特定参数值,二是利用正则表达式匹配参数,三是通过location对象和对象字面量解析。重点讲解了解码参数值的过程和decodeURI函数的应用。
摘要由CSDN通过智能技术生成

问题需求

项目上遇到获取url的参数值,如获取这个ie的值
https://www.baidu.com/s?ie=utf-8

代码

方法一:

	function  getQueryString (name) {
		        // 如果链接没有参数,或者链接中不存在我们要获取的参数,直接返回空
		        if (location.href.indexOf("?") == -1 || location.href.indexOf(name + '=') == -1) {
		            return '';
		        }
		
		        // 获取链接中参数部分
		        var queryString = location.href.substring(location.href.indexOf("?") + 1);
		        queryString = decodeURI(queryString);
		
		        // 分离参数对 ?key=value&key2=value2
		        var parameters = queryString.split("&");
		
		        var pos, paraName, paraValue;
		        for (var i = 0; i < parameters.length; i++) {
		            // 获取等号位置
		            pos = parameters[i].indexOf('=');
		            if (pos == -1) { continue; }
		
		            // 获取name 和 value
		            paraName = parameters[i].substring(0, pos);
		            paraValue = parameters[i].substring(pos + 1);
		
		            // 如果查询的name等于当前name,就返回当前值,同时,将链接中的+号还原成空格
		            if (paraName == name) {
		                return unescape(paraValue.replace(/\+/g, " "));
		            }
		        }
		        return '';
		    }
			getQueryString (name)

方法二

	function getUrlParam() {
		  var url = location.search; //获取url中"?"符后的字串
		  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]] = unescape(strs[i].split("=")[1]);
		    }
		  }
		  return theRequest;
		}
		var Request = new Object();
		Request = getUrlParam();
		console.log(Request)
		var id=unescape(Request["name"]); 
		console.log(id)

方法三 正则表达式

	function  getUrlParam(name)
		 {
		 var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
		 var r = window.location.search.substr(1).match(reg); //匹配目标参数
		 if(r!=null) return decodeURI(r[2]); return null; //返回参数值
		 } 
		var name =getUrlParam("name")
		console.log(name)

参数值是中文

参数值是中文的时候浏览器会一个编码的过程,所以我们拿到的是经过了编码的值,解决办法就是用decodeURI()解码就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值