當我們用ajax提交表單時,通常用的都是serialize對表單進行序列化。
但是有了檔案標籤type='file'
時,用serialize進行序列化,就會有問題了
解決表單有檔案時序列化的方法,就是用formdata
下面來說下formdata怎麼用:
例項化了乙個空的formdata物件,可以認為它就是乙個form表單,但現在裡面什麼控制項都沒有。
var formdata =
newformdata()
;
可直接放表單物件序列化,自動封裝物件物件為dom物件var formdata =
newformdata($
("#subform")[
0]);
給例項化的formdata物件新增乙個控制項,注意這裡新增的是表單已寫有input標籤的type
="file"
name
="myfile"
>
formdata.
('myfile',$
('input[name=myfile]')[
0].files[0]
);
沒用表單時,以「鍵-值」對的形式給formdata新增控制項,注意第3個引數「上傳檔名」是可選的
formdata.
(name, value, filename)
;
將例項化的formdata作為jquery.ajax()方法data引數的值傳遞進去,提交給後端伺服器
注意的是以下三個引數不可少
cache:
false
,processdata:
false
,contenttype:
false
,
cache
設定為false,上傳檔案不需要快取。
contenttype
設定為false。因為是由form表單構造的formdata物件,且已經宣告了屬性***enctype=「mutipart/form-data」***,所以這裡設定為false。
一、有表單
ajax用var formdata = new formdata($("#subform")[0]);
......
form
>
function
ajaxsubmit()
二、沒有表單var omyform =
newformdata()
; omyform.
("username"
,"groucho");
omyform.
("accountnum"
,123456);
omyform.
("file",$
('#file')[
0].files[0]
); $.ajax
(
表單序列化
1.serialize 方法 格式 var data form serialize 功能 將表單內容序列化成乙個字串。這樣在ajax提交表單資料時,就不用一一枚舉出每乙個引數。只需將data引數設定為 form serialize 即可。與jquery中其他方法一樣,serialize 方法也是作用...
表單序列化
1 2 對錶單字段的名稱和值進行url編碼,使用和號 分割。3 不傳送禁用的表單字段。4 只傳送勾選的核取方塊和單選按鈕。5 不傳送type為 reset 和 button 的按鈕。6 多選選擇框中的每個選中的值單獨乙個條目。7 在單擊提交表單的情況下,也會傳送提交按鈕 否則,不傳送提交按鈕。也包括...
表單序列化
什麼是表單序列化尼?1 對錶單字段的名稱和值進行url編碼,使用和號 分隔 2 不傳送禁用的表單字段 3 只傳送勾選的核取方塊和單選按鈕 4 不傳送 type 為 reset 和 button的按鈕 5 多選按鈕每個選中的值單獨乙個條目 6 單擊提交按鈕提交表單時,會傳送提交按鈕 否則不傳送提交按鈕...