在本文章中
如何建立一個FormData物件
透過HTML表單創建FormData物件
使用FormData物件上傳檔案
#透過AJAX提交表單和上傳檔案可以不使用FormData物件
#相關連結
透過FormData物件可以組裝一組用 XMLHttpRequest
傳送請求的鍵/值對。它可以更靈活方便的發送表單數據,因為可以獨立於表單使用。如果你把表單的編碼類型設定為multipart/form-data ,則透過FormData傳輸的資料格式和表單透過submit()
方法傳輸的資料格式相同
你可以自己建立一個FormData對象,然後透過呼叫它的append()
方法來新增字段,就像這樣:
var formData = new FormData(); formData.append("username", "Groucho"); formData.append("accountnum", 123456); // 数字 123456 会被立即转换成字符串 "123456"// HTML 文件类型input,由用户选择formData.append("userfile", fileInputElement.files[0]);// JavaScript file-like 对象var content = '<a id="a"><b id="b">hey!</b></a>'; // 新文件的正文...var blob = new Blob([content], { type: "text/xml"}); formData.append("webmasterfile", blob);var request = new XMLHttpRequest(); request.open("POST", "http://foo.com/submitform.php"); request.send(formData);
注意:欄位"userfile" 和"webmasterfile" 都包含一個檔案.欄位"accountnum" 是數字類型,它將被FormData.append()
方法轉換成字串型別(FormData
物件的欄位類型可以是 Blob
, File
, 或string: 如果它的欄位類型不是Blob也不是File,則會被轉換成字串型別。 "accountnum", "userfile" 和 "webmasterfile"四個字段,然後使用XMLHttpRequest
send()方法傳送表單資料。 #類型。功能並將其擴展為支援使用者係統上的檔案。 Edit
想要建構一個包含Form表單資料的FormData對象,需要在建立FormData物件時指定表單的元素。 ##你還可以在建立一個包含Form表單資料的FormData物件之後和發送請求之前,附加額外的資料到FormData物件裡,像這樣:
var formData = new FormData(someFormElement);
示例:var formElement = document.querySelector("form");var request = new XMLHttpRequest();
request.open("POST", "submitform.php");
request.send(new FormData(formElement));
使用FormData對像上傳文件
Edit
var formElement = document.querySelector("form");var formData = new FormData(formElement);var request = new XMLHttpRequest(); request.open("POST", "submitform.php"); formData.append("serialnumber", serialNumber++); request.send(formData);
<form enctype="multipart/form-data" method="post" name="fileinfo"> <label>Your email address:</label> <input type="email" autocomplete="on" autofocus name="userid" placeholder="email" required size="32" maxlength="64" /><br /> <label>Custom file label:</label> <input type="text" name="filelabel" size="12" maxlength="32" /><br /> <label>File to stash:</label> <input type="file" name="file" required /> <input type="submit" value="Stash the file!" /></form><p></p>
注意:
如果FormData物件是透過表單建立的,則表單中指定的請求方式會被應用到方法open()中 。var form = document.forms.namedItem("fileinfo"); form.addEventListener('submit', function(ev) { var oOutput = document.querySelector("p"), oData = new FormData(form); oData.append("CustomField", "This is some extra data"); var oReq = new XMLHttpRequest(); oReq.open("POST", "stash.php", true); oReq.onload = function(oEvent) { if (oReq.status == 200) { oOutput.innerHTML = "Uploaded!"; } else { oOutput.innerHTML = "Error " + oReq.status + " occurred when trying to upload your file.<br \/>"; } }; oReq.send(oData); ev.preventDefault(); }, false);
data.append("myfile", myBlob, "filename.txt");
#
以上是JavaScript中FormData 在物件中運用的詳細內容。更多資訊請關注PHP中文網其他相關文章!