URLSearchParams 没有给出正确的参数值

URLSearchParams is not giving correct parameter values

我正在尝试使用 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() 才能正确设置查询字符串参数。我制作了一个包含所有键 + 值的简单对象,然后是一个辅助函数来正确附加对象的内容:

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'));