2011-12-31 57 views
4

對於給定的HTML表單,是否需要用戶代理以特定順序構建提交請求?是否需要HTML用戶代理以特定順序提交表單數據?

我正在瀏覽HTML 4.0.1規範,它似乎沒有指定「成功控件」成爲提交請求的一部分的順序。 Section 17.13.3,處理表單數據,規定:

當用戶提交一個形式(例如,通過激活提交按鈕),則用戶代理如下處理它。

步驟一:確定successful controls

第二步:建立一個表格的數據集

形式的數據集是從成功控制

構造的 control-name/ current-value對一個序列

第三步:編碼表格數據集

然後根據FORM元素的enctype屬性指定的內容類型對錶單數據集進行編碼。

第四步:提交的編碼形式的數據集

在步驟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")]

(A廣度優先搜索);或者甚至是通過迭代隨機哈希表中的控制名稱/當前值對而產生的非確定性順序?

使用IE 9和Firefox 9.0測試此表單。1,似乎都使用深度優先的搜索順序。也許其他瀏覽器是不同的。問題是這個命令是否在某處被規定。

+0

不要認爲他們需要遵循的順序。 – vdbuilder 2011-12-31 23:30:16

回答

7

如果繼續參考部分17.13.4 of the HTML spec,則表示默認內容類型爲application/x-www-form-urlencoded。該內容類型的部分說:

控制名稱/值在它們出現在文檔的順序列出

這將提示深度優先遍歷,並且似乎與您的瀏覽器測試一致。

相關問題