2010-11-25 1 views
11

Mon site Web a une recherche basée sur AJAX, qui utilise des liens profonds. Lorsque l'utilisateur suit un lien ...Obtenir une partie de la requête après un signe de hachage

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

... Tags devrait déjà été sélectionné « Mac OS » et « avis » dans un formulaire de recherche et d'articles liés à « Mac OS » et « review » devrait être présenté à la page .

Je suivant le scénario, que la nécessité de fixer

  1. utilisateur suit le lien http://example.com/articles#/?tags=Mac%20OS
  2. Au cours de rendu de première page, tous les articles sont récupérés
  3. Du côté client, partie de hachage est analysée et seuls les articles liés à "Mac OS" sont demandés via AJAX.
  4. Le client reçoit les articles "Mac OS" et remplace tous les articles, récupérés à l'étape 2. Il marque également la balise "Mac OS" sélectionnée sur un formulaire de recherche.

Le problème ici - est rendu d'articles en double, qui semble vraiment mauvais pour l'utilisateur. Il regarde tous les articles, et après quelques secondes, ils seront remplacés par "Mac OS" -articles.

je dois avoir le scénario suivant:

  1. utilisateur suit le lien http://example.com/articles#/?tags=Mac%20OS
  2. hachage serveur parse partie et retourne "Mac OS" articles
  3. concernant la PI Client comprend que "Mac OS" -les articles sont déjà là et ne font rien. Il marque simplement la balise "Mac OS" sélectionnée.

Pour ce faire, je dois obtenir le hachage partie de la chaîne de demande:

/?tags=Mac%20OS 

Je ne peux pas utiliser les paramètres de la demande après, parce que je l'utilise AJAX et les liens profonds. Avec? -part, le navigateur sera forcé de recharger la page. Je dois faire n'importe quoi sans recharger la page.

Votre aide sera grandement appréciée.

Merci.

Répondre

14

La partie d'une URL après le hachage n'est pas envoyée au serveur, vous ne pouvez donc pas la traiter. Vous pouvez extraire cette partie de l'URL dans le code côté client qui crée votre requête Ajax et l'envoyer en tant que paramètre.

0

@NickFitz est correct, mais si vous devez envoyer tout ce qui vient après le symbole #, vous pouvez utiliser les caractères codés en URL qui représentent #, soit %23.

Donc %23 et tout ce qui vient après %23 sera envoyé au serveur. Si vous utilisez un serveur web moderne, ils reconnaîtront automatiquement que %23 est #. Dans Ruby on Rails, Rack le fait pour vous.

Questions connexes