URLSearchParams没有提供正确的参数值

问题描述

我正在尝试使用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')

如果还有其他方法可以提取url参数值,请让我知道。

解决方法

必须使用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'));