1

データにタグを付け、タグごとにデータを表示するための Web アプリケーションがあるため、UI は各タグのチェックボックスのリスト、各データ項目のチェックボックスのリスト、チェックされたタグをチェックされたデータに追加する「タグ」ボタンです。 、およびチェックされたデータを無視し、指定されたタグを持つデータ項目のみを表示する「フィルター」ボタン。

私の問題は、前者の操作 (データのタグ付け) が「明らかに」POST 操作であるのに対し、後者の操作 (タグによるデータの表示) は「明らかに」GET 操作であることです。しかし、メソッド属性は送信ボタンではなくフォームに関連付けられているため、両方のボタンに対してどちらかを選択する必要があります。

私が知る限り、2 つのフォームを作成したくはありません。タグ リスト全体を複製する必要があるからです。送信ボタンの選択に基づいて方法を選択する方法はありますか?

JavaScript ソリューションは許容されますが、JavaScript を使用しない方が望ましいでしょう。

(この質問への回答を投稿しますが、特に好きではないので、代替案を歓迎します)。

4

4 に答える 4

2

formmethod原則として、HTML5 に従って送信ボタンで属性を使用できます。ただし、IE 9 であっても、IE では認識されません。HTML5 にこの機能が存在することは、以前のバージョンの HTML にこの機能がないことを間接的に証明しています。

一方、POST メソッドは、外界に変化をもたらさない単純な表示にも使用でき、多くの場合技術的な理由 (データが多すぎるなど) で使用する必要があります。したがって、メソッドの問題はあまり関係がないと思います。POSTを使用するだけです。

于 2012-07-16T11:57:12.650 に答える
1

私は正直にjavascriptソリューションを使用します。onsubmitフォームでは、a)押された送信ボタンをチェックし、b)これに基づいてフォームのメソッドを変更するメソッドを起動します。

于 2012-07-16T11:24:34.117 に答える
0

Jon Taylor によって提案された解決策に同意しjavascriptます。問題は、フォームのメソッドが GET または POST であるかどうかではなく、ユーザー入力をどのようにフィルタリング/検証/サニタイズするかです。ユーザーがフォームのメソッドを操作できるという事実に懸念がある場合は、サーバー側でその問題の解決策を実装する必要があります。

于 2012-07-16T11:35:10.453 に答える
0

考えられる解決策の 1 つは、POST を使用し、サーバーに 303 See Other ヘッダーを与えて、それを GET 要求に変更することです。これは、1 つの目的を果たすために 2 つのリクエストを作成することを意味しますが、これは残念なことですが、少なくとも URL が変更され、ユーザーが特定のタグ選択にリンクできるようになることを意味します。

于 2012-07-16T11:19:53.083 に答える