Получить часть запроса после символа хеша

На моем веб-сайте работает поиск по AJAX, который использует глубокую привязку. Когда пользователь следует по ссылке...

http://example.com/articles#/?tags=Mac%20OS,review

... теги "Mac OS" и "review" должны быть уже выбраны в форме поиска, а статьи, связанные с "Mac OS" и "review", должны быть представлены на странице.

У меня есть следующий сценарий, что нужно исправить

  • Пользователь следует по ссылке http://example.com/articles#/?tags=Mac%20OS
  • Во время первоначальной рендеринга страницы все статьи извлекаются
  • На стороне клиента анализируется хеш-часть, и через AJAX запрашиваются только связанные с "Mac OS" статьи.
  • Клиент получает файлы "Mac OS" и заменяет все статьи, полученные на шаге 2. Также он отмечает тег "Mac OS" как выбранный в форме поиска.

Проблема здесь - это продублирование дублированных статей, что выглядит очень плохо для пользователя. Он смотрит на все статьи, и через пару секунд они будут заменены на "Mac OS" -частицы.

Мне нужно иметь следующий сценарий:

  • Пользователь следует по ссылке http://example.com/articles#/?tags=Mac%20OS
  • Сервер анализирует хэш-часть и возвращает статьи, связанные с "Mac OS" .
  • Клиент понимает, что "Mac OS" -артикулы уже существуют и ничего не делают. Он просто отмечает тег "Mac OS" как выбранный.

Для этого мне нужно получить хэш-часть строки запроса:

/?tags=Mac%20OS

Я не могу использовать параметры запроса после?, потому что я использую AJAX и глубокую привязку. С? -part, браузер будет вынужден перезагрузить страницу. Мне нужно сделать что угодно, не перезагружая страницу.

Вы будете очень благодарны.

Спасибо.

Ответ 1

Часть URL-адреса после хэша не отправляется на сервер, поэтому вы не можете его обрабатывать. Вы можете извлечь эту часть URL-адреса в клиентском коде, который создает ваш запрос Ajax и отправить его как параметр.

Ответ 2

@NickFitz верен, но если вы должны отправить все, что приходит после символа хеша/фунта #, вы можете использовать символы с кодировкой URL, которые представляют #, который равен %23.

Итак %23 и все, что приходит после %23, будет отправлено на сервер. Если вы используете современный веб-сервер, они автоматически распознают, что %23 - #. В Ruby on Rails Rack делает это для вас.