41

HTMLで次のようなことをした場合に期待できる、十分にサポートされた一般的な動作はありますか?

<form method="get" action="/somePage.html?param1=foo&param2=foo">
  <input name="param2"></input>
  <input name="param3"></input>
</form>

この種のことは本質的にばかげているように思えますが、私はそれがあちこちで使用されているのを見て、地球上で期待される動作はどうあるべきか疑問に思いました。ブラウザは、アクションに「&param2 = whatever&param3 = whatever」を追加するのに十分スマートですか、それとも2番目の疑問符を投げるだけですか?または何?これが実際に物事を行う正しい方法である場合がありますか?

4

4 に答える 4

67

method属性がGETに設定されている場合、ブラウザーは、フォーム引数値を作成する前に、action属性からクエリ文字列パラメーターを削除します。

したがって、あなたの例では、送信時のサーバーへのリクエストは次のようになります。/somePage.html?param2=value&param3=value

したがって、例のようにメソッドが「GET」の場合、これを行う理由はありません。

于 2009-04-09T00:26:43.830 に答える
24

確かではありませんが、これらの変数を非表示の入力フィールドに配置することをお勧めします。このように、投稿方法が POST か GET かは問題ではありません。

<form method="get" action="/somePage.html">
  <input name="param2"></input>
  <input name="param3"></input>
  <input type="hidden" name="param1" value="foo" />
  <input type="hidden" name="param2" value="foo" />
</form>
于 2009-04-09T00:46:59.133 に答える
4

フォームを投稿する前に、スクリプトを使用してフォームのメソッド属性を「POST」に変更できるため、アクションでクエリ文字列を使用できる可能性があります。しかし、それは何に対しても最善の解決策ではないようです。

于 2009-04-09T01:46:11.253 に答える
3

さて、答えがイエスである最後を除いて、すべての質問が答えられました。についてPOSTは許可されていますが、機能しない場合もあります。postdataまたはquerystringのみを許可するWebサーバーを見たので、信頼できません。

于 2009-04-09T01:48:01.670 に答える