问题描述
我正在尝试使用URLSearchParams提取其值经过AES加密的url参数。但是我注意到,如果该值包含“ +”号,则URLSearchParams没有给出正确的值。
例如,如果url为'https://www.google.com/?data=a+b',则URLSearcParams将数据表示为'a b'。我正在使用以下代码。
var url = new URL('https://www.google.com/?data=a+b')
url.searchParams.get('data')
解决方法
必须使用searchParams.append()
才能正确设置查询字符串参数。我用所有键+值制作了一个简单的对象,然后创建了一个辅助函数来正确附加objec的内容:
const url = new URL('https://www.google.com/')
const params = {
'data': 'a+b','moarData': 'c+d'
};
Object.entries(params).forEach(([key,val]) => url.searchParams.append(key,val));
console.log(url.searchParams.get('data'));
console.log(url.searchParams.get('moarData'));