19

HTTP 仕様によると、POST 要求には任意のデータ本体を含めることができます。

HTMLform要素は URL に POST でき、input要素を含むことができますが、それらのinput要素はクエリ文字列に変換されます。

form送信ボタンが押されたときに送信する HTTP POST リクエストの本文のデータも送信するにはどうすればよいですか?

4

2 に答える 2

7

HTTP 仕様によると、POST 要求には任意のデータ本体を含めることができます。

そのとおりです。ただし、そのデータの形式にはいくつかの仕様があります。HTML フォームの場合、最も一般的に使用されるのはapplication/x-www-form-urlencodedで、その後に が続きmultipart/form-dataます。enctypeHTML<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

于 2013-10-05T02:12:28.480 に答える
4

ボタンが押されたときに javascript を使用して ajax リクエストを送信し、フォームの送信をキャンセルします。フォーム送信は常に名前と値のペアになります。XForms はカスタマイズされたデータを送信できますが、これが公共の用途である場合、使用中の大多数のブラウザーで XForms がサポートされるようになるまでには何年もかかるでしょう。

于 2010-06-04T02:35:13.003 に答える