11

次の要件を持つチケット システムに取り組んでいます:
ホームページは 2 つのセクションに分かれています:
Sec-1。いくつかのフィルタ オプションがここに表示されます (クローズド チケット、オープン チケット、すべてのチケット、自分に割り当てられたチケットなど)。これらのフィルターを 1 つ以上選択できます。
秒-2。上記のフィルターを満たすチケットのリストがここに表示されます。

これが私が望むものです: フィルターを変更すると
--> 変更が URL に反映され、ブックマークできるようになります。
--> ajax リクエストが送信され、選択したフィルターを満たすチケットのリストが秒-2 で更新されます。


同じコードを使用して、(a)そのフィルターのセットを選択する方法と
(b) ブックマークを使用してページをリロードする方法の両方でチケットを読み込む必要があります。


URL には選択したフィルターが含まれます (# の後に追加)。
ページのフィルターを変更すると、URL のハッシュ部分が変更され、関数 (ajaxHandler() など) が呼び出されて URL が解析されます。フィルターを取得してから、セクション 2 に表示されるチケットのリストを取得する ajax リクエストを行います。
window.onloadで
同じ関数 ajaxHandler() を呼び出します。
これがYahooマップ
のやっ ていることだと思います。

そのような URL スキームを実装する最良の方法は何ですか?
私は正しい方向に向かっていますか?

4

7 に答える 7

6

ええ、あなたはまさに正しい方向に向かっており、すべてのブラウザーと OS でこれを正しく行うために多くの作業が行われています。正しく行うのが最も難しい部分の 1 つは、#urlfragment 構文を使用しているときにブラウザーの戻るボタンと進むボタンが正しく機能するようにすることです。

そのようなことをサポートするライブラリ: http://developer.yahoo.com/yui/history/

于 2010-04-12T04:41:36.580 に答える
2

jQuery を使用している場合は、Asual によるこの素敵なライブラリがあります: jQuery Address for deep linking. 優れた API リファレンスと例があります。アプリの実装に必要なすべてのツールが提供されます。

于 2010-04-16T16:27:24.783 に答える
2

Google Wave アプリのソリューションは非常に洗練されていると思います。基本的には、解析可能な URL フラグメントを使用して説明するものです。そのように: http://some.domain/some/url/#filters(filter1:key1,filter2:key2);someOtherfragment;andAnotherFragment

于 2010-04-12T04:43:02.343 に答える
1

これはやや単純な答えですが、XHR (XMLHttpRequest オブジェクト) とは対照的に、AJAX に非表示の iframe メソッドを使用することを検討したいと考えています。これにより、ブラウザが履歴を維持できるようになるため、戻るボタンは引き続き機能します。

もう少し: http://ajaxpatterns.org/IFrame_Call

于 2010-04-12T04:50:26.057 に答える
1

Ben Almanは、 BBQと呼ばれるフル機能の jQuery プラグインを作成しました。IMO、Address プラグインよりもはるかに優れています。

于 2010-04-18T19:26:51.123 に答える
0

Chrome、Safari、および Firefox では、HTML5history.pushStatehistory.replaceState()メソッドを使用できます

ここここにいくつかのドキュメントがあります。

于 2010-04-18T13:22:14.353 に答える
0

sblom のコメントに記載されているように、履歴に yui ライブラリを使用することはオプションです。ブラウザ間の互換性の問題に対処したくない場合は、ユーザーがクリックして urk にアクセスできるブックマークまたはリンク ボタンをページに提供することを検討することをお勧めします。

ここで行いますhttp://connect.garmin.com/explore#sortField=relevance¤tPage=1 地図の上部にリンクがあります。

于 2010-04-12T04:45:56.953 に答える