11

私の Web サイトには、ディープリンクを使用する AJAX を利用した検索機能があります。ユーザーがリンクをたどると…</p>

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

… タグ「Mac OS」と「レビュー」は検索フォームで既に選択されている必要があり、「Mac OS」と「レビュー」に関連する記事がページに表示されます。

次のシナリオがありますが、修正する必要があります

  1. ユーザーはリンクhttp://example.com/articles#/?tags=Mac%20OSをたどります
  2. 最初のページのレンダリング中に、すべての記事が取得されます
  3. クライアント側では、ハッシュ部分が解析され、「Mac OS」関連の記事のみが AJAX 経由でリクエストされます。
  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 を使用すると、ブラウザーは強制的にページをリロードします。ページをリロードせずに何かをする必要があります。

あなたが助けていただければ幸いです。

ありがとう。

4

2 に答える 2

17

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

于 2010-11-25T09:21:37.463 に答える
2

@NickFitz は正しいですが、#ハッシュ/ポンド記号の後に来るものを送信する必要がある場合は、#どちらが%23.

そのため、%23その後に続くものはすべて%23サーバーに送信されます。最新の Web サーバーを使用している場合、それらは自動的にそれを認識し%23ます#。Ruby on Rails では、Rack がこれを行います。

于 2014-09-03T09:20:23.023 に答える