Параметры запроса в AngularJS, извлеченные из службы $routeParams без учета второго ‘#’

#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() .