表單的提交與接收

2021-09-24 06:21:05 字數 2741 閱讀 4317

開發工具與關鍵技術:visual studio 2015 c#

之前我們一起學習的新增與修改都有用到表單,也簡單地講解了表單的提交與接收的方法,這裡呢就是把表單的提交與接收的方法彙總起來,下面我們一起去了解一下吧!

from表單是乙個承載資料的容器,那麼表單提交呢就是我們需要把表單裡的資料提交到另乙個地方,所以提交表單的前提是設定表單的屬性。

屬性: action

值 : url

描述:規定當提交表單時向何處傳送表單資料

屬性:method

值 :get/post

描述:規定用於傳送 form-data 的 http 方法。(提交表單的方式)

首先是路徑url,就是規定當提交表單時向何處傳送表單資料,路徑url有兩種,一種是絕對 url,是指向其他站點的,另一種是相對 url,就是指向站點內的檔案,目前我們用到的是相對 url。路徑確定了接下來就是提交表單的方式,規定用於傳送 form-data(表單資料)的 http 方法,提交表單的方式有兩種,get和post,一般我們是用get來向伺服器上獲取資料,用post來提交資料,而post是用來向伺服器上傳遞修改資料,為什麼呢?因為與post相比,get獲取資料更快,但是傳輸的資料量小,主要受限與於url長度限制,而post可以傳輸大量的資料。若用get來提交表單資料的話,在傳輸的過程中資料會直接暴露在url中,就是可以直接在瀏覽器的路徑上看到提交的資料,這樣是非常不安全的,(例子如下圖)

而用post提交表單資料時是將表單中的資料放在form的資料體中,按照變數和值物件的方式傳遞到所指向的站點,且post的一系列操作對使用者來說是不可見的,所以兩者相對來說,post比get更穩當些。

那按上面的說法來看,get傳輸資料量小又不安全,直接用post不就行了?不,並不是這樣的,俗云「every coin has two

sides.」(每個硬幣都有兩面),用get獲取資料後,重新整理不會有負面的影響,因為它只是獲取資料,而用post方法重新整理頁面重複提交可能會產生不良的後果,所以這兩種提交表單的方式是視情況使用,再詳細一點的區別看下面的內容,**自課堂學習內容):

get/post區別:

1、get方法是用來向伺服器上獲取資料,而post是用來向伺服器上傳遞修改資料。

2、get將表單裡的資料新增到action所指向的url後面,並且兩者之間使用」?」連線,而各個變數之間使用」&」連線;gost是將表單中的資料放在form的資料體中,按照變數和值物件的方式,傳遞到所指向的action.

3、get是不安全的,因為在傳輸過程中,資料被放在請求的url中,這樣,使用者可以直接在瀏覽器上看到提交的資料,一些系統內部資訊也一同顯示在使用者面前。post的所有操作對使用者來說都是不可見的。

4、get傳輸的資料量小,主要是受限與於url長度限制,其中ie瀏覽器對url的最大限度為2083個字元(

而post可以的傳輸大量的資料,所以在上傳檔案和大資料量時使用post。

5、form表單的提交預設為get方法提交。

6、get方式獲取資料後,重新整理不會有負面的影響,因為它只是獲取資料,而post方法刷洗頁面重複提交可能會產生不良的後果。

get提交時引數直接暴露在url上。

(w3school上給出的區別:)

與 post 相比,get 更簡單也更快,並且在大部分情況下都能用。然而,在以下情況中,請使用 post 請求:

l 無法使用快取檔案(更新伺服器上的檔案或資料庫)

l 向伺服器傳送大量資料(post 沒有資料量限制)

l 傳送包含未知字元的使用者輸入時,post 比 get 更穩定也更可靠

上面講了表單的屬性路徑和提交方式,這裡再說一下提交表單的方法,一般表單都是有自動提交的這個功能的,若果不想自動提交可以設定屬性οnsubmit=」return」;,這個屬性是禁止表單自動提交的。再有就是手動提交表單,手動提交表單就是獲取表單,然後給它設定屬性(**如下圖),但是手動提交表單的時候不能設定禁止自動提交的屬性。

關於提交表單方面的就講完了,接下來我們來講接收表單的方法,提交表單資料後就要接收表單資料,也就是從檢視提交的表單資料由控制器來接收,接收的方法就有三種,一起來看一下吧!

第一種方法:formcollection

用formcollection來在控制器中獲取頁面表單元素的資料,它是表單元素的集合,包括元素。form表單提交一定要有name的值,提交了表單就要在控制器這邊宣告乙個載體來接收。但是這種接收方法對應的提交方式為post,使用get提交方式的話是無法接收的。(例子如下圖)

第二種方法:request.form[「name」];

這種方法跟第一種方法是非常相似的,在控制器宣告載體來接收請求在頁面表單元素的name屬性的值(只請求指定的一條資料),這種接收方法對應的也是post的提交方式,使用get提交方式的話同樣是無法接收的。(例子如下圖)

第三種方法:設定引數

通過設定引數來接收提交過來的資料,也就是提交過來的資料有多少個就設定多少個引數來接收,不用像第一第二種方法那樣宣告載體,需要name屬性值什麼的,設定好引數就可以直接呼叫了的。get和post這兩種提交方式都適用於這種方法的。(例子如下圖)

form表單提交與ajax提交的差別

第一種 表單提交form submit方式 form提交是我們經常使用的向後台提交資料的一種方式 action設定url,method設定http請求的方式。第二種 ajax非同步請求方式 ajxa首先是要通過js獲取到使用者輸入內容,然後可以對輸入的內容進行ajxa請求傳送到後台進行乙個驗證,驗證...

PHP 五 表單提交與驗證

post 超全域性變數 獲取前端使用 post 形式傳輸給後台的資料 該變數是乙個關聯陣列 get 超全域性變數 獲取前端使用 get 形式傳輸給後台的資料 該變數是乙個關聯陣列 request 該變數記錄著通過 get和 post 請求方式 傳遞給後台的資料,但一般不使用,因為速度較慢,而且不太安...

Form表單提交與ajax非同步提交的區別與聯絡

區別 form表單提交 一般都會進行頁面跳轉 ajax非同步提交 可以不進行頁面跳轉 form表單提交 forms 用form表單的action和method來確定提交到的位址和提交的方式 點選確認按鈕會觸發form表單的提交事件,資料傳輸到後端,然後由servlet後台控制頁面跳轉以及資料傳遞。a...