HTTP 仕様によると、POST 要求には任意のデータ本体を含めることができます。
HTMLform
要素は URL に POST でき、input
要素を含むことができますが、それらのinput
要素はクエリ文字列に変換されます。
form
送信ボタンが押されたときに送信する HTTP POST リクエストの本文のデータも送信するにはどうすればよいですか?
HTTP 仕様によると、POST 要求には任意のデータ本体を含めることができます。
そのとおりです。ただし、そのデータの形式にはいくつかの仕様があります。HTML フォームの場合、最も一般的に使用されるのはapplication/x-www-form-urlencoded
で、その後に が続きmultipart/form-data
ます。enctype
HTML<form>
要素の属性を介して設定できます。HTML 仕様の17.13.4 フォーム コンテンツ タイプの章も参照してください。
HTML フォーム要素は URL に POST でき、入力要素を含む場合がありますが、これらの入力要素はクエリ文字列に変換されます。
それが実際にどのように機能するかapplication/x-www-form-urlencoded
です。このクエリ文字列は、実際には HTTP リクエストの本文全体を表していることに注意してください。したがって、あなたが思うように、リクエストの本文は間違いなく空ではありません。
送信ボタンが押されたときにフォームが送信する HTTP POST リクエストの本文のデータも送信するようにするにはどうすればよいですか?
したがって、実際にはすでにそれを行っています。フォーム自体の HTML DOM ツリー表現のコピーを送信する場合は、前のステートメントで多少示唆されているように、次のように JavaScript を少し使用してそれを実現できます。
<form onsubmit="this.source.value=this.outerHTML">
...
<input type="hidden" name="source" />
<input type="submit" />
</form>
フォームの HTML DOM ツリー表現全体が文字列形式になり、 name のリクエスト パラメータとして使用できますsource
。
ボタンが押されたときに javascript を使用して ajax リクエストを送信し、フォームの送信をキャンセルします。フォーム送信は常に名前と値のペアになります。XForms はカスタマイズされたデータを送信できますが、これが公共の用途である場合、使用中の大多数のブラウザーで XForms がサポートされるようになるまでには何年もかかるでしょう。