Получить часть запроса после хеш-знака - PullRequest
11 голосов
/ 25 ноября 2010

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

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

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

У меня есть следующий сценарий, который необходимо исправить

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

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

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

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

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

/?tags=Mac%20OS

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

Ваша помощь будет принята с благодарностью.

Спасибо.

Ответы [ 2 ]

15 голосов
/ 25 ноября 2010

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

0 голосов
/ 03 сентября 2014

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

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

...