form表單的三個屬性 action 、mothod 、 enctype。


form_action: 表單數據提交到此頁面

下面的表單擁有兩個輸入字段以及一個提交按鈕,當提交表單時,表單數據會提交到名為 "form_action.asp" 的頁面:

<form action="form_action.asp" method="get">
  <p>First name: <input type="text" name="fname" /></p>
  <p>Last name: <input type="text" name="lname" /></p>
  <input type="submit" value="Submit" />
</form>

form_mothod:

GET和POST本質上就是TCP鏈接,並無差別。但是由於HTTP的規定和瀏覽器/服務器的限制,導致他們在應用過程中體現出一些不同。

GET和POST還有一個重大區別,簡單的說:

GET產生一個TCP數據包;POST產生兩個TCP數據包。(GET只送一次,POST送兩次第一次打招呼,第二次再送,具體情況要看網絡環境的快慢)

並不是所有瀏覽器都會在POST中發送兩次包,Firefox就只發送一次。

1.安全性: get 暴露在url 中,歷史紀錄中  post > get

2.編碼:

get只能向服務器發送ASCII字符,而post則可以發送ISO 10646中的字符

get和post對應的enctype屬性有區別:

application/x-www-form-urlencoded 
在發送前編碼所有字符(默認) 

multipart/form-data 
不對字符編碼。 在使用包含文件上傳控件的表單時,必須使用該值。

3.提交數據的長度

IE將請求的URL長度限制為2083個字符,從而限制了get提交的數據長度,如果URL超出了這個限制,提交form時IE不會有任何反映。

4.緩存

由於一個get得到的結果直接對應到一個URL,所以get的結果頁面有可能被瀏覽器緩存,而post一般不能

5.引用和SEO

最本質的區別

get是用來從服務器上獲得數據,而post是用來向服務器上傳遞數據

6.什么時候選擇get 或者post

若符合下列任一情況,則用post方法: 
a.請求的結果有持續性的副作用,例如:數據庫內添加新的數據行。 
b.若使用get方法,則表單上收集的數據可能讓URL過長。 
c.要傳送的數據不是采用ASCII編碼。 

若符合下列任一情況,則用get方法: 
a.請求是為了查找資源,html表單數據僅用來搜索。 
b.請求結果無持續性的副作用。 
c.收集的數據及html表單內的輸入字段名稱的總長不超過1024個字符。 

7.瀏覽器差異

form_enctype:

form表單的enctype設置為multipart/form-data后,表單中除了文件后台能拿到,其他值后台都拿不到。

一、application/x-www-form-urlencoded:
1、表單中的enctype值如果不設置,則默認是application/x-www-form-urlencoded,它會將表單中的數據變為鍵值對
的形式
2、如果action為get,則將表單數據編碼為(name1=value1&name2=value2…),然后把這個字符串加到url后面,中間
用?分隔
3、如果action為post,瀏覽器把form數據封裝到http body中,然后發送到服務器。
二、text/plain:
表單以純文本形式進行編碼
三、multipart/form-data:
1、當我們上傳的含有非文本內容,即含有文件(txt、MP3等)的時候,需要將form的enctype設置為multipart/form-
data。
2.將表單中的數據變成二進制數據進行上傳,所以這時如果用request是無法直接獲取到相應表單的值的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM