1

現在、ユーザーが次のURLにアクセスすると:

www.foo.com/details.hmtl#id=123

サーバーは「details.html」を返し、ページが返されるとクライアント側のAjax呼び出しを実行して、id=123のアイテムのデータをロードします。JQuery用のBBQプラグインを使用しています

サーバーでハッシュマークに続くパラメーターを取得して、ページがサーバーによって最初に返されるときに、の詳細を含むページを返すことができるようにする方法はありますかid=123

これは、ユーザーのブラウザでJavascriptがオンになっているかどうかに関係なく、詳細が引き続き表示されるようにするために必要です。また、Javascriptがオンになっている場合は、サイトの既存のボタンをクリックして、Ajaxを介してコンテンツを変更できます。

すべての助けを事前に感謝します

編集:

現在、ページは次の方法で返されます。

id = self.request.get("id")
template_values= {'id': id}
path = os.path.join(os.path.dirname(__file__), 'details.html')
self.response.out.write(template.render(path, template_values))
4

3 に答える 3

3

ブラウザはリクエストに対して/details.htmlのみを送信するため、これを行うことはできません。

必要に応じて、たとえばパラメータを使用できます。初めてユーザーをこのページ/details.hmtl?id=123に送信し、ユーザーのリクエストをセッション値に保存して、パラメータなしで実際のページにリダイレクトできます。そしてハッシュ/details.hmtl#id=123を使用して、現在のユーザーのセッションを取得し、ページのコンテンツをレンダリングします。

それがJSを使わずにできる方法です

NiLよろしく

于 2011-01-04T13:37:12.213 に答える
0

アンカー(#)の後の部分は、その周りをハックしない限り、ブラウザーによってサーバーに送信されることはありません。Cookieを使用してこれを行う方法は次のとおりです。http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/

于 2011-01-04T13:37:38.017 に答える
-1

なぜこれに#を使用しているのですか?NiLの答えの最初の部分は、実際のクエリを使用することですか?代わりに、私はそれを2番目にします。ただし、一般的なページなどにリダイレクトする必要はありません。ID123に関する情報が含まれるページが必要なので、サーバーからそれを返します。あなたは、ID 123に関するページに対する単一のリクエストを、明確な理由なしに、リクエスト一般的な応答固有のリクエスト固有の応答サイクルに変えることを積極的に選択しています。これは、ユーザーがjavascriptを持っている通常の場合です。

必ず動的なものを使用し、2番目のリクエストのページを変更してください。ただし、それまでに、ユーザーがjavascriptを使用していることはすでにわかっています。最初のリクエストでは、?id = 123を使用して、ページを完成させます。

なぜそれを複雑にして遅くするのですか?

于 2011-01-04T15:10:52.550 に答える