Декодирование URL в закодированных параметрах (returnUrl) - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу получить некоторые параметры внутри URL, используя кратное значение параметра «returnUrl».

Пример:

HTTPS://force.com?positionId=a0w0X000007HjBuQAK&lang=fr&mediaChannel=a0o0X00000EGQ5TQAX&returnUrl=https%253A%2F%2force.com%2Fcxsrec__cxsSearchDetail%3Fid%3Da0w0X000007HjBuQAK%26lang%3Dfr%26mediaChannel%3Da0o0X00000EGQ5TQAX%26returnUrl%3Dhttps%253A%2F%2force.com%2Fcxsrec__cxsSearch%253Flang%253Dfr%2526mediaChannel%253Da0o0X00000EGQ5TQA%2526 site%253DFrance%2526hcFilter%253Da0Z0X00000XiFF3UAN%252Ca0Z0X00000XiUqTUAV%2526orderBy%253DPosition_name__c%2526orderDir%253Dasc%2526mediaChannel%253Da0o0X00000EGQ5TQAX%26lang%3Dfr%26mediaChannel%3Da0o0X00000EGQ5TQAX’

? ... returnUrl %3Dhttps% 253A% 2F% 2force.com% 2Fcxsrec__cxsSearch% 253Flang% 253Dfr% 2526mediaChannel% 253Da0o0X00000EGQ5TQA% 2526 site % 253DFrance% 2526hcFilter ... получить

* 0 site .

Я пытался использовать функцию decodeURI , а затем searchParams.get ("site") , но decodeURI он не декодирует параметры после returnUrl .

Есть ли другая функция для этого?

1 Ответ

0 голосов
/ 06 февраля 2019

Вам нужно decodeURIComponent().

Я удалил пробел до site в URL:

const url1 = new URL('https://force.com?positionId=a0w0X000007HjBuQAK&lang=fr&mediaChannel=a0o0X00000EGQ5TQAX&returnUrl=https%253A%2F%2force.com%2Fcxsrec__cxsSearchDetail%3Fid%3Da0w0X000007HjBuQAK%26lang%3Dfr%26mediaChannel%3Da0o0X00000EGQ5TQAX%26returnUrl%3Dhttps%253A%2F%2force.com%2Fcxsrec__cxsSearch%253Flang%253Dfr%2526mediaChannel%253Da0o0X00000EGQ5TQA%2526site%253DFrance%2526hcFilter%253Da0Z0X00000XiFF3UAN%252Ca0Z0X00000XiUqTUAV%2526orderBy%253DPosition_name__c%2526orderDir%253Dasc%2526mediaChannel%253Da0o0X00000EGQ5TQAX%26lang%3Dfr%26mediaChannel%3Da0o0X00000EGQ5TQAX');
const params1 = new URLSearchParams(url1.search);
const returnUrl = params1.get('returnUrl');

const url2 = new URL(decodeURIComponent(returnUrl));
const params2 = new URLSearchParams(url2.search);
const site = params2.get('site');

console.log(site);

Подробности см. В encodeURIComponent() описание

...