2010-11-25 10 views
11

私のウェブサイトにはAJAXによる検索があり、ディープリンクを使用しています。ユーザーがリンクをたどるとき...ハッシュ記号の後にリクエスト部分を取得

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

...タグの「Mac OS」と「レビュー」は、すでに「マックOS」と「レビュー」ページに表示されなければならないに関係し、検索フォームや記事で選択されなければなりません。

私は

  1. ユーザーが最初のページのレンダリング時にはリンクhttp://example.com/articles#/?tags=Mac%20OS
  2. を次の修正する必要がある、すべての記事は、クライアント側では
  3. フェッチされ、ハッシュ部分が解析されていることを、シナリオを以下しています「Mac OS」関連の記事のみがAJAX経由でリクエストされます。
  4. クライアントはステップ2で取り出した「Mac OS」 - 粒子を受け取り、すべての記事を置き換えます。また、「Mac OS」タグを検索フォームに選択してマークします。

ここで問題となるのは、記事のレンダリングが重複しているため、ユーザーにとっては本当に悪いようです。彼はすべての記事を見て、数秒後に「Mac OS」の記事に置き換えられます。その "マックOS"、

  1. ユーザーがhttp://example.com/articles#/?tags=Mac%20OS
  2. Serverは、ハッシュ部分とリターンの "Mac OS" クライアントが理解
  3. 関連の記事を解析し、リンクをたどる:

    は私がシナリオ以下の持っている必要があります - 粒子はすでに存在し、何もしません。選択されたものとして「Mac OS」タグだけがマークされます。私はAJAXとディープリンクを使用しているため、

    /?tags=Mac%20OS 
    

    私は後のリクエストパラメータを使用することはできません?

は、これを行うために、私は、要求文字列のハッシュ部分を取得する必要があります。 ?-partを指定すると、ブラウザは強制的にページをリロードします。私はページをリロードせずに何かをする必要があります。

大変お手伝いします。

ありがとうございました。

答えて

14

ハッシュ後のURLの一部がサーバーに送信されないため、そこで処理できません。 Ajaxリクエストを作成するクライアント側コードでURLのその部分を抽出し、パラメータとして送信することができます。

0

@NickFitzは正しいですが、#ハッシュ/ポンド記号の後ろにあるものを送信する必要がある場合は、#を表すURLエンコードされた文字(%23)を使用できます。

だから%23となり、それ以降のものは%23となり、サーバーに送信されます。現代のWebサーバーを使用している場合、彼らは%23#であることを自動的に認識します。 Ruby on Railsでは、Rackがこれを行います。

関連する問題