#javascript #angularjs #web
#javascript #angularjs #веб
Вопрос:
Мой маршрут таков
https://admin.quiverstest.com/#/mobile?next=https://admin.quiverstest.com/#/resetpassword?t=GudTR3Ym4MkPnOtJwJAGzGYXwdzWsSSnkLy10
И я извлекаю параметры запроса (содержимое после ‘?’ в URL) из службы $ routeParams следующим образом:
console.log($routeParams)
И это дает мне только содержимое перед вторым ‘#’, например:
OUTPUT = {next:"https://admin.quiverstest.com/"}
И я хочу, чтобы мой вывод был похож:
{next:"https://admin.quiverstest.com/#/resetpassword?t=GudTR3Ym4MkPnOtJwJAGzGYXwdzWsSSnkLy10"}
Но проблема в том, что он рассматривает параметры запроса только перед вторым ‘#’ в URL.
Комментарии:
1. Второй хэш недопустим, в параметрах вы можете использовать только косые черты, вопросительные знаки и символы. хэш не является pchar … обрабатывается как #. обойти можно с помощью window . объект местоположения и анализ URL-адреса самостоятельно.
Ответ №1:
Как сказал Роберт, в URI может быть только одна «хэш-метка», потому что она указывает начало фрагментной части URI.
Вы должны закодировать значение следующего параметра с encodeURI()
помощью или encodeURIComponent()
, чтобы удалить все специальные символы, такие как хэш. Когда вам нужно фактическое значение для next, вы можете декодировать его с decodeURI()
помощью или decodeURIComponent()
.