引用场景:
一条链接带数个参数,其中有参数是一条 url(也带有参数),这样就会造成获取参数丢失。
例如
url: https://www.baidu.com/?params…://www.baidu.com/?err=ppp&lll=xxxx
获取参数
// 截取 url 对应的参数
getUrlParam (url) {
url = url == null ? window.location.href : url
const search = url.substring(url.lastIndexOf('?') + 1)
const obj = {}
const reg = /([^?&=]+)=([^?&=]*)/g
search.replace(reg, (rs, $1, $2) => {const name = decodeURIComponent($1)
let val = decodeURIComponent($2)
val = String(val)
obj[name] = val
return rs
})
console.log('url', obj)
return obj
}
获取结果
这是个错误的结果,
正确结果是
解决办法
通过 encodeURIComponent 对参数 params03 进行编码,
操作:
let href = encodeURIComponent(‘https://www.baidu.com/?err=pp…’)