AJAX(Asynchronous JavaScript and XML)是一種通信技術(shù),通過(guò)在后臺(tái)與服務(wù)器進(jìn)行數(shù)據(jù)交換,可以在網(wǎng)頁(yè)上實(shí)現(xiàn)異步更新。而FormData是一種用于在發(fā)送AJAX請(qǐng)求時(shí)傳遞表單數(shù)據(jù)的數(shù)據(jù)類型。它可以將表單中的數(shù)據(jù)以鍵值對(duì)的形式進(jìn)行封裝,并且支持發(fā)送文件。本文將詳細(xì)介紹FormData數(shù)據(jù)類型的特點(diǎn)及使用方法。
在使用傳統(tǒng)的表單提交方式時(shí),我們通常會(huì)使用
使用FormData數(shù)據(jù)類型發(fā)送AJAX請(qǐng)求的方法如下:
var formData = new FormData(); // 添加鍵值對(duì)數(shù)據(jù) formData.append('username', 'John'); formData.append('password', '123456'); // 添加文件 var fileInput = document.querySelector('input[type="file"]'); formData.append('avatar', fileInput.files[0]); var xhr = new XMLHttpRequest(); xhr.open('POST', '/api/user'); xhr.send(formData);
上述代碼通過(guò)實(shí)例化FormData對(duì)象,并通過(guò)append()方法添加了鍵值對(duì)數(shù)據(jù),其中鍵為'username'、'password',值分別為'John'、'123456'。并且通過(guò)獲取文件輸入框的文件,使用append()方法添加了一個(gè)文件數(shù)據(jù),鍵為'avatar',值為文件對(duì)象。
FormData數(shù)據(jù)類型對(duì)于表單數(shù)據(jù)的處理非常方便。比如,我們可以使用FormData對(duì)象將用戶在登錄表單中輸入的數(shù)據(jù)發(fā)送到服務(wù)器進(jìn)行驗(yàn)證:
var loginForm = document.getElementById('login-form'); var formData = new FormData(loginForm); var xhr = new XMLHttpRequest(); xhr.open('POST', '/api/login'); xhr.send(formData);
上述代碼中,我們直接將包含登錄表單的DOM元素作為參數(shù)傳入FormData構(gòu)造函數(shù),并將其賦值給formData變量。然后,我們將formData作為數(shù)據(jù)參數(shù)發(fā)送到服務(wù)器。
除了封裝普通的鍵值對(duì)數(shù)據(jù),F(xiàn)ormData數(shù)據(jù)類型還可以用于發(fā)送文件。比如,我們可以使用FormData對(duì)象將用戶上傳的頭像圖片發(fā)送到服務(wù)器進(jìn)行保存:
var avatarForm = document.getElementById('avatar-form'); var formData = new FormData(avatarForm); var xhr = new XMLHttpRequest(); xhr.open('POST', '/api/upload'); xhr.send(formData);
上述代碼中,我們將包含頭像上傳表單的DOM元素作為參數(shù)傳入FormData構(gòu)造函數(shù),并將其賦值給formData變量。然后,我們將formData作為數(shù)據(jù)參數(shù)發(fā)送到服務(wù)器。
總而言之,F(xiàn)ormData數(shù)據(jù)類型是一種非常方便的使用AJAX發(fā)送表單數(shù)據(jù)的數(shù)據(jù)類型。它支持封裝表單數(shù)據(jù)以及發(fā)送文件,使得我們可以實(shí)現(xiàn)無(wú)刷新提交表單的功能。在實(shí)際應(yīng)用中,我們可以根據(jù)不同的需求來(lái)選擇使用不同的數(shù)據(jù)類型進(jìn)行數(shù)據(jù)交互。