將 HTML5 FormData 轉換為 JSON
將 HTML5 FormData 物件的條目轉換為 JSON 是 Web 開發中的一項常見任務。雖然有多種方法可以實現此目的,但最直接、最有效的方法是直接在 FormData 物件上使用 forEach() 函數。
var object = {}; formData.forEach(function(value, key){ object[key] = value; }); var json = JSON.stringify(object);
此方法迭代 FormData 物件中的每個鍵值對,並將它們新增至新的 JavaScript 物件。然後使用 JSON.stringify() 方法將物件轉換為 JSON 字串。
更新:ES6 箭頭函數
對於喜歡ES6 語法的人來說,可以使用箭頭函數編寫相同的解決方案:
var object = {}; formData.forEach((value, key) => object[key] = value); var json = JSON.stringify(object);
更新2:支援多值表單元素
支援多值表單元素,例如多選列表,可以使用以下代碼:
var object = {}; formData.forEach((value, key) => { if(!Reflect.has(object, key)){ object[key] = value; return; } if(!Array.isArray(object[key])){ object[key] = [object[key]]; } object[key].push(value); }); var json = JSON.stringify(object);
更新3:透過XMLHttpRequest 和Fetch API 直接提交
可以使用以下方法將FormData 直接傳送到伺服器而不進行轉換XMLHttpRequest 物件或Fetch API:
var request = new XMLHttpRequest();
request.open('POST', 'http://example.com/submitform.php');
request.send(formData);
fetch('http://example.com/submitform.php', {
method: 'POST',
body: formData
}).then((response) => {
// do something with response here...
});
更新4:複雜物件的JSON序列化
可以透過toJSON()方法為複雜物件定義自訂序列化邏輯。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3