url网址链接参数解析为对象格式

url网址中的中文会被编码,下面方法可以得到一个对象格式的完整信息

 

例如url为

http://localhost:8080/#/login?username=111&password=%E5%88%89Ba&list=%26C%80A

// 获取输入的url?后面的字符串

let urlParams = window.location.href.split('?')[1]

 

// URLSearchParams返回的对象上有许多方法可以使用

let urlParamsFun = new URLSearchParams(urlParams)

 

 URLSearchParams方法有

append():增加一个新的键值参数
delete(key):删除对应的键值
get(key):返回第一个值
getAll(key):返回所有值组成的数组
has(key):是否存在某个键值
set(key, value):设置指定的键值对参数
sort():按键名进行排序
toString():返回查询字符串
keys():返回包含所有键名的迭代器对象
values():返回包含所有值的迭代器对象
entries():返回包含所有键和值的迭代器对象,主要要用到这个方法!

 

 开始解析

let obj = {}

for (let k of urlParamsFun.entries()) {

  // 注意特殊情况:list为数组为对象时,要对第二层decodeURIComponent再解码一下,不然得到的还是加密形式的

  if (['list'].includes(k[0]))  {

    obj[k[0]] = JSON.parse(decodeURIComponent(k[1]))

  } else {

    obj[k[0]] = k[1]

  }

}

console.log(obj).           

// { username:'111', password: 'admin', list: [{ a:1 },{ b:2 }] }

// 模拟的数据形式,不是上面解码出来的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值