表單和POST提交資料序列化,GET不需要序列化

2021-10-01 23:31:20 字數 2048 閱讀 1845

get是將未加密的明文資料追加到url後面提交,post是將未加密的明文資料封裝到請求體。所以說這兩種方式雖然乙個是在url可見乙個不可見,但嚴格意義上都是不安全的,想要安全只能使用https。無論是submit還是ajax都是這樣的。

submit提交的資料屬於預設提價方式,所以submit的get和post都是經過序列化後的可以被直接識別,並且序列化後的格式為中間加&的格式(注意這並不是序列化後的唯一標誌,序列化的功能並不只如此),並且都是明文的,僅區別於引數的位置不同,然而這個位置還是可以改變的。

序列化後的資料能夠被後端直接識別。把表單中所有的鍵值對的資料變成後台能夠識別的鍵值對方式。沒有序列過後的資料是不能識別的,有重複的或者不合法的不合理的資料。所以必須序列後才能提交資料。

直接把資料跟在url後面的資料是受到url長度限制的。另外get提交方式將資料封裝在url後面post提交資料封裝在請求體中,這個原則並不是一成不變的,可以後面設定改變的。

ajax提交表單中的資料預設是沒有序列化的所以要序列化(預設get和post都沒有序列化)。序列化分為兩種方式。分別是serialize()和serializearray() 。後台只能識別&分隔型別的資料。

serialize()序列化為中間加&的方式。序列化並不是只在中間加個&就可以了,還有進行資料整理等功能。這種序列化後的格式就是和submit提交的同一種方式,可以直接接收了。

serializearray()序列化成json的格式。這種序列化後的資料要在接收方加上@requestbody之後變成&連線的方式才能接收。

這是因為後台能夠直接處理的資料格式,是一種經過序列化的鍵值對資料,比如前端要向後台提交三個引數,分別是a=1,b=2,c=3,那麼後台接收到的資料就應該是a=1&b=2&c=3(可以看到其實就是每個「鍵值對」之間用&連線)。當我們用get方式提交資料時,引數是直接附加到url後面的,即

***.***這是網域名稱此略.***?a=1&b=2&c=3 可以看到?後面的正是後台程式能夠直接處理的資料格式,所以get方式提交資料的話,就不需要再對引數進行序列化處理了,直接提交即可。 而當我們用post方式提交時,通常我們提交的資料本身就是乙個json物件,比如說像這樣的: var data = ; 而提交時資料是直接以原始格式儲存在body中而不是以鍵值對的方式附加到url中的,所以後台程式是無法直接識別的,這時候就需要在提交前先把data轉換為 a=1&b=2&c=3 的格式再提交,這就是序列化。 當然,如果資料是通過表單提交的,那麼不管是post方式還是get,瀏覽器會自動進行序列化,無需前端js再做任何處理。

案例:不序列化的

this.$message.success('刪除部門成功!')

}序列化的

);if(res.state !==1) return this.$message.error('登入失敗,使用者名稱或密碼錯誤')

this.$message.success('登入成功'+res)

this.$store.commit('login',res.data)

// 1. 將登入成功之後的 token,儲存到客戶端的 sessionstorage 中

// 1.1 專案中除了登入之外的其他api介面,必須在登入之後才能訪問

// 1.2 token 只應在當前**開啟期間生效,所以將 token 儲存在 sessionstorage 中

console.log(res)

"token",res.data.token);

//2.通過程式設計式導航跳到後台主頁,路由位址是 /home

this.$router.push("/home")

});}

表單序列化提交

1 serialize 方法 描述 序列化表單內容為字串,用於ajax請求。格式 var data form serialize 2.serializearray 方法 描述 序列化表單元素 類似 serialize 方法 返回json資料結構資料。注意,此方法返回的是json物件而非json字串。...

ajax的序列化表單提交

通過傳統的 form 表單提交的方式上傳檔案?1 234 不過傳統的 form 表單提交會導致頁面重新整理,但是在有些情況下,我們不希望頁面被重新整理,這種時候我們都是使用 ajax 的方式進行請求的。使用 serialize 對 form 表單進行序列化提交?1 2345 6789 ajax er...

表單序列化

1.serialize 方法 格式 var data form serialize 功能 將表單內容序列化成乙個字串。這樣在ajax提交表單資料時,就不用一一枚舉出每乙個引數。只需將data引數設定為 form serialize 即可。與jquery中其他方法一樣,serialize 方法也是作用...