URLSearchParams не дает правильных значений параметров

#javascript #url #url-parameters

#javascript #url #url-параметры

Вопрос:

Я пытаюсь использовать URLSearchParams для извлечения параметров url, значения которых зашифрованы AES. Но я заметил, что если значение содержит знак » «, 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.

Ответ №1:

Вы должны использовать 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'));