My web-site has AJAX-powered search, that uses deep-linking. When user follows a link …
http://example.com/articles#/?tags=Mac%20OS,review
… tags "Mac OS" and "review" should already been selected in a search form and articles, related to "Mac OS" and "review" should be presented on the page.
I have following scenario, that a need to fix
- User follows the link http://example.com/articles#/?tags=Mac%20OS
- During initial page rendering, all articles are fetched
- On the client side, hash-part is parsed and only "Mac OS"-related articles are requested via AJAX.
- Client receives "Mac OS"-articles and replaces all articles, fetched at step 2. Also it marks "Mac OS" tag as selected on a search-form.
The problem here - is duplicated articles rendering, that looks really bad for the user. He looks at all articles, and after couple of seconds, they will be replaced with "Mac OS"-articles.
I need to have following scenario:
- User follows the link http://example.com/articles#/?tags=Mac%20OS
- Server parses hash-part and returns "Mac OS"-related articles
- Client understands, that "Mac OS"-articles are already there and does nothing. It just marks "Mac OS" tag as selected.
To do this, i need to get hash-part of the request string:
/?tags=Mac%20OS
I cannot use request parameters after ?, because i use AJAX and deep-linking. With ?-part, browser will be forced to reload the page. I need to do anything without reloading the page.
You help will be greatly appreciated.
Thanks.
@NickFitz is correct, but if you must send whatever comes after the
#
hash/pound symbol, you can use the URL encoded characters that represent#
which is%23
.So
%23
and whatever that comes after%23
will be sent to the server. If you are using modern web server, they will automatically recognize that%23
is#
. In Ruby on Rails, Rack does this for you.The part of a URL after the hash is not sent to the server, so you can't process it there. You can extract that part of the URL in the client-side code that creates your Ajax request and send it as a parameter.