要提交的資料必須放在input標籤或者textarea標籤內嗎?放在別的標籤裡面就不行嗎?比如span標籤為什麼就不行?如果用input或者textarea不方便怎麼辦?
回複內容:
要提交的資料必須放在input標籤或者textarea標籤內嗎?放在別的標籤裡面就不行嗎?比如span標籤為什麼就不行?如果用input或者textarea不方便怎麼辦?
也是可以的,到時你就用js擷取這些標籤的內容,然後組裝成要提交的資料,然後通過ajax提交給後端
單純的html form提交肯定行,但如果使用js處理的話,你可以隨便放,只要你能用js擷取到值就行了。。
表單提交
瀏覽器是如何提交表單的,或者說,瀏覽器在提交表單時,要做哪些事情。
瀏覽器並不是將所有的表單控制項全部發送到伺服器的,而是會尋找所有的【成功控制項】,只將這些成功控制項的資料發送到服務端, 什麼是成功控制項呢?
簡單地來說,成功控制項就是:每個表單中的控制項都應該有一個name屬性和”當前值“, 在提交時,它們將以 name=value 的形式做為提交資料的一部分。
對於一些特殊情況,成功控制項還有以下規定:
-
控制項不能是【禁用】狀態,即指定【disabled="disabled"】。即:停用控制項將不是成功控制項。
-
如果一個表單包含了多個提交按鍵,那麼僅當使用者點擊的那個提交按鈕才算是成功控制項。
-
對於checkbox控制項來說,只有被使用者勾選的才算是成功控制項。
-
對於radio button來說,只有被使用者勾選的才算是成功控制項。
-
對於select控制項來說,所有被選擇的選項都做為成功控制項,name由select控制項提供。
-
對於file上傳檔案控制項來說,如果它包含了選擇的檔案,那麼它將是一個成功控制項。
此外,瀏覽器不會考慮Reset按鈕以及OBJECT元素。
注意:
-
對於checkbox, radio button來說,如果它們被確認為成功控制項,但沒有為控制項指定value屬性, 那麼在表單提交時,將會以"on"做為它們的value
-
如果在服務端讀不到某個表單控制項的值,請檢查它是否滿足以上規則。
所以, form表單提交只能識別上述html類型, 其他類型form提交時是不會提交到服務器的
參考自Fish Li,