使用過Delphi的程式設計師,對Form這個詞應該比較熟悉。在Delphi中,Form被翻譯為「界面、窗口」,作用是:為用戶提供界面,供用戶輸入信息,向用戶展示處理結果。
HTML5中也有Form,功能與Delphi中的Form差不多,用於接收用戶輸入,和伺服器進行交互。不過HTML5中的Form,中文一般譯為「表單」。
Web前端,指瀏覽器上展示的HTML文件,以及HTML文件使用的CSS文件及JavaScript腳本。
Web後端,指運行在伺服器上的,為Web前端提供服務的軟體,Web後端也常常被稱為Web伺服器。
在HTML5中,Web前端與Web後端交互的流程一般如下:
(1)Web前端向Web後端發起HTTP請求;
(2)Web後端收到HTTP請求後,進行業務處理;
(3)Web後端向Web前端返回HTTP響應。
到目前為止,我們在HTML5中碰到的Web前端發起HTTP請求的方式有兩種:
第1種:HTML頁面通過<a>元素向用戶提供超級連結,用戶點擊該連結時,會向伺服器發起請求;
第2種:HTML頁面通過表單為用戶提供輸入界面,用戶提交表單時,會向伺服器發起請求。
HTTP請求有八種,對Web前端開發者來說,最常用的是GET請求和POST請求。
GET請求:向Web後端請求指定的頁面;GET請求攜帶的數據,以URL參數的形式提供;
POST請求:向Web後端提交數據,請求Web後端對數據進行處理;POST請求攜帶的數據,在請求消息體中提供。
在HTML5中,用戶點擊連結地址,Web前端向後端發起GET請求;
在HTML5中,用戶提交表單,Web前端可以向後端發起GET請求,也可以發起POST請求。
說明:由於目前沒有和後端伺服器對接,為了便於對表單設計進行展示,下面的例子HTML文檔,都是用GET請求來提交數據。
<form>元素:表示表單;
<input>元素:表單中的輸入控制項,輸入控制項可以是文本框、單選框、複選框、按鈕等等;
<label>元素:表單中的標籤控制項;
<button>元素:表單中的按鈕控制項;
<select>與<option>元素:用於實現列表框和下拉菜單;
<textarea>元素:多行文本控制項。
下面是一個可以提交文本框輸入的HTML文檔:
<!DOCTYPE html><html> <head> <title>form001</title> <meta charset="utf-8" /> </head> <body> <form action="process.html" method="get"> <label>請輸入您的姓名:</label> <input type="text" name="name" /> <br/> <input type="submit"/> </form> </body></html>
在瀏覽器中打開該HTML文檔時,展示效果如下:
我們可以在文本框中輸入信息,例如輸入tom:
當我們點擊「提交」按鈕後,瀏覽器顯示信息如下;
可以看到,數據被提交給process.html頁面,並且附帶了一個參數name,且值為我們輸入的tom。
下面是一個可以提交單選框被選信息的HTML文檔:
<!DOCTYPE html><html> <head> <title>form002</title> <meta charset="utf-8" /> </head> <body> <form action="process.html" method="get"> <label>性別:</label> <br/> 男:<input type="radio" name="gender" value="male" /> 女:<input type="radio" name="gender" value="female" /> <br/><br/> <label>國籍:</label> <br/> 中國:<input type="radio" name="nationality" value="Chinese" /> <br/> 美國:<input type="radio" name="nationality" value="American" /> <br/> 日本:<input type="radio" name="nationality" value="Japanese" /> <br/> 英國:<input type="radio" name="nationality" value="English" /> <br/> 其它:<input type="radio" name="nationality" value="Other" /> <br/> <br/> <input type="submit"/> </form> </body></html>
在瀏覽器中打開該HTML文檔時,顯示效果如下:
我們可以選擇性別和國籍,例如我們選擇「男」和「中國」:
當我們點擊「提交」按鈕後,瀏覽器顯示信息如下:
可以看到,我們選擇的信息被提交給process.html文件,並且附帶了gender參數的值為male,nationality參數的值為Chinese。
下面是一個可以提交複選框被選信息的HTML文檔;
<!DOCTYPE html><html> <head> <title>form003</title> <meta charset="utf-8" /> </head> <body> <form action="process.html" method="get"> <label>請選擇您的業餘愛好:</label> <br/> 美術:<input type="checkbox" name="hobby" value="Art" /> <br/> 足球:<input type="checkbox" name="hobby" value="Football" /> <br/> 唱歌:<input type="checkbox" name="hobby" value="Singing" /> <br/> 廚藝:<input type="checkbox" name="hobby" value="Cook" /> <br/> 其它:<input type="checkbox" name="hobby" value="Other" /> <br/> <br/> <input type="submit"/> </form> </body></html>
在瀏覽器中打開該HTML文檔時,顯示效果如下:
我們可以選擇自己的業餘愛好,例如我們選擇足球、唱歌、廚藝:
當我們點擊「提交」按鈕後,瀏覽器顯示信息如下:
可以看到,我們選擇的信息被提交給process.html文件,並且附帶了三個hobby參數,其值分別為Football,Singing和Cook。
下面是一個可以提交下拉菜單被選信息的HTML文檔;
<!DOCTYPE html><html> <head> <title>form004</title> <meta charset="utf-8" /> </head> <body> <form action="process.html" method="get"> <label>請選擇您的學歷:</label> <br/> <select name="education"> <option value="primary_school">小學</option> <option value="junior_high_school">初中</option> <option value="senior_high_school">高中</option> <option value="college">大學</option> </select> <br/><br/> <label>請選擇您的興趣愛好:</label> <br/> <select name="hobby" multiple="true"> <option value="Art">美術</option> <option value="Football">足球</option> <option value="Singing">唱歌</option> <option value="Cook">廚藝</option> <option value="Other">其它</option> </select> <br/><br/> <input type="submit"/> </form> </body></html>
在瀏覽器中打開該HTML文檔時,顯示效果如下:
我們可以單選我們的學歷,也可以通過按下Shift+滑鼠鍵多選我們的興趣。例如我們選擇「初中」學歷,選擇「美術」和「廚藝」兩項愛好:
當我們點擊「提交」按鈕後,瀏覽器顯示信息如下:
可以看到,我們選擇的信息被提交給process.html文件,並且附帶了education參數和兩個hobby參數,education的值為junior_high_school,hobby的值為Art和Cook。
上面列舉了幾種控制項的HTML5表單設計方法,其它的控制項也大概差不多,把多個控制項組合在同一個<form>元素中的方法也是相同的,這裡就不再贅述了。