【javaScript】如何获取经过encodeURI编码后的URL地址参数param的乱码值(封装)

前言

需求:
这里解释一下标题的意思,也就是说我们的url地址一般都是经过编码后的,所以不会出现中文这样的字眼,因为它们都是被编码了,像这样(比如我们访问一个地址是这样的http://hotPlace/place.html?topPlace=广州&name=琶洲):

http://hotPlace/place.html?topPlace=%E5%B9%BF%E5%B7%9E&name=%E7%90%B6%E6%B4%B2
在这里插入图片描述

需求问题:
那我们这么去拿到这些编码的乱码中文转成解码后的中文呢?

思路:
我们可以配合window.location 对象拿到对应的参数,在使用正则RegExp筛选这个参数,最后通过解码decodeURI拿到乱码的中文参数值

封装代码:

/*
    * 取地址栏的参数 
    * @param key  
    * key为传递的参数名称 例如 http://hotPlace/place.html?topPlace=广州&name=琶洲 key就是topPlace、name
    * @return
*/
function getUrlParam(key){    
// 获取当前访问地址参数 window.search 取到的是一串带参数的字符串,如:?topPlace=广州&name=琶洲 
var url = window.location.search;    
 
// 正则筛选地址栏    
var reg = new RegExp("(^|&)"+ key +"=([^&]*)(&|$)"); 
   
// 匹配目标参数   
var result = url.substr(1).match(reg);    

// 返回参数值    
return result ? decodeURI(result[2]) : null;
}

调用方法:

// 控制台打印参数 topPlace
console.log(getUrlParam('topPlace')); // 结果为 广州
// 控制台打印参数 name
console.log(getUrlParam('name')); // 结果为 琶洲

window.location对象:
在这里插入图片描述

结语

希望可以帮到您,over~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值