2011-12-31 5 views
4

特定のHTMLフォームでは、送信依頼を特定の順序で作成するためにユーザーエージェントが必要ですか?HTMLユーザーエージェントは、特定の順序でフォームデータを送信する必要がありますか?

私はHTML 4.0.1の仕様を見ていましたが、「成功したコントロール」が送信時にリクエストの一部となるような順序を指定していないようです。 Section 17.13.3、フォームデータの処理状態:

ユーザーが(送信ボタンをアクティブにするなどして)フォームを送信すると、ユーザーエージェントは次のように処理します。

ステップ1:successful controls

ステップ2識別:フォームデータを構築するデータセットフォームが成功コントロール

から構成control-name/current-value対の配列である

を設定します

ステップ3:フォームデータセットを符号化する

FORM要素のenctype属性で指定されたコンテンツタイプに従ってフォームデータセットがエンコードされます。

ステップ4:符号化されたフォームデータの送信がステップ2で

を設定し、フォームデータセットは、3と考えられる配列のでステップで符号化される順序として記載されています一定。しかし、これは、成功したコントロールの順序がデータセットの形式にどのようなものかという問題を引き起こす。例えば

、次のHTMLフォームを与え:

<form action="#" method="GET"> 
<input type="hidden" name="key1" value="value1" /> 
<div> 
    <div> 
     <input type="hidden" name="key2" value="value2" /> 
    </div> 
    <input type="hidden" name="key3" value="value3" /> 
    <input type="submit" name="submit" value="Submit" /> 
</div> 
<input type="hidden" name="key5" value="value5" /> 
</form> 

フォームデータセットは

[("key1""value1")、("key2""value2")、("key3""value3")だろう、("submit""Submit")、("key5""value5")]

(すなわち、 DOMの深さ優先検索)。または

[("key1""value1")、("key5""value5")、("key3""value3")、("submit""Submit")、("key2""value2")]

(幅優先探索);または制御名/現在値の組を無作為化されたハッシュテーブルで反復した結果である非決定的な順序であってもよいでしょうか?

IE 9とFirefox 9.0でこのフォームをテストしてください。1の場合、両方とも深さ優先探索順序を使用するように見える。おそらく、他のブラウザは異なるでしょう。問題は、この注文がどこかで規定されているかどうかです。

+0

必要な注文があるとは思わないでください。 – vdbuilder

答えて

7

セクション17.13.4 of the HTML specに続行すると、既定のコンテンツタイプがapplication/x-www-form-urlencodedであることが示されています。そのコンテンツタイプのセクションは言う:

コントロール名/値が、彼らは文書に表示される順番にを記載されています。

これは深さ優先のトラバーサルを示唆しており、ブラウザのテストに同意するようです。

関連する問題