Submitting Form Data Using New HTML5 Methods (FormData)
It is more convenient to submit form data using HTML5's FormData API. 1. It can automatically collect form fields with name attribute or manually add data; 2. It supports submission in multipart/form-data format through fetch or XMLHttpRequest, which is suitable for file upload; 3. When processing files, you only need to append the file to FormData and send a request; 4. Note that the same name field will be overwritten, JSON conversion and no nesting structure need to be handled.

Submitting form data using the new HTML5 method is actually more convenient than before, especially after FormData API. It not only simplifies the process of data collection, but also easily handles complex scenarios such as file uploading, which is particularly suitable for the needs of modern web development.

Collect form data using FormData
FormData is a built-in JavaScript object that can easily collect data in forms. You don't need to manually traverse each input box, and you don't have to worry about encoding issues.
It's very simple to use, just pass in a <form></form> element:

const form = document.querySelector('form'); const formData = new FormData(form);
In this way, formData contains all field values in the form with name attribute. Note that if a field does not have name , it will not be collected.
If you just want to add some data manually, you can also not bind the entire form:

const formData = new FormData(); formData.append('username', 'john_doe'); formData.append('age', '25');
Submit FormData to the server
After collecting the data, the next step is to send it to the server. The most common way is to send a POST request in conjunction with fetch or XMLHttpRequest .
Here is an example of submitting with fetch :
fetch('/submit', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error)); It should be noted that FormData will be automatically sent in multipart/form-data format, which is a key format that supports file upload. If you are using the JSON interface, you may need to convert it into a normal object first:
const obj = Object.fromEntries(formData);
However, at this time, be careful if there are multiple fields with the same name (such as multiple selection boxes), the subsequent values will be overwritten by the previous one. Be careful.
It's easier to handle file uploads
In the past, when handling file uploads, we usually needed to use iframes or plug-ins to simulate asynchronous uploads. Now we just need to use FormData directly.
For example, if you want the user to upload avatar:
<input type="file" name="avatar">
Then read the file in JS and append it to FormData :
const fileInput = document.querySelector('input[type="file"]'); const file = fileInput.files[0]; const formData = new FormData(); formData.append('avatar', file);
Then send it out with fetch , and the server can receive it normally. This applies to various types of files such as pictures and PDFs.
If you also want to preview the pictures uploaded by users, you can use FileReader to cooperate with Blob . Although this part is not the content of FormData , it is often used with file operations.
Basically that's it
In general, HTML5's FormData makes front-end processing of forms more intuitive and powerful. Whether it is basic data collection, asynchronous submission, or file upload, it supports it well. And with the support of fetch and modern browsers, the code is also written cleaner.
Of course, there are some details to pay attention to, such as:
- The form field must have
nameto be collected - The fields with the same name will be merged (only the last one is retained)
- Nested structures (such as arrays or objects) are not supported
However, these problems have corresponding solutions, and overall, they are very easy to use.
The above is the detailed content of Submitting Form Data Using New HTML5 Methods (FormData). For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undress AI Tool
Undress images for free
Undresser.AI Undress
AI-powered app for creating realistic nude photos
AI Clothes Remover
Online AI tool for removing clothes from photos.
Clothoff.io
AI clothes remover
Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!
Hot Article
Hot Tools
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
What is the aside element for in HTML5?
Aug 12, 2025 pm 04:37 PM
Theelementshouldbeusedforcontenttangentiallyrelatedtothemaincontent,suchassidebars,pullquotes,definitions,advertisements,orrelatedlinks;2.Itcanbeplacedinsideoroutsideanarticledependingoncontext;3.ItisasemanticelementthatenhancesaccessibilityandSEObyp
How to create a simple HTML5 webpage
Aug 12, 2025 am 11:51 AM
To create a simple HTML5 web page, you need to first use the declaration document type, and then build a basic structure containing, and, which sets the character encoding, viewport and title, add visible content such as title, paragraph, link, pictures and lists. Save it as a .html file and open it directly in the browser for viewing, without server support. This is the basis of a complete and effective HTML5 page.
How do you use the autofocus attribute in HTML5?
Aug 14, 2025 pm 06:47 PM
Theautofocusattributeautomaticallyfocusesaformelementwhenapageloads.2.Itisabooleanattribute,sonovalueisneeded—justincludeautofocusinthetag.3.Onlyoneelementperpageshoulduseittoavoidunpredictablebehavior.4.Itworksoninput,textarea,select,andbuttonelemen
How to use the nav tag for navigation links in HTML5
Aug 15, 2025 am 05:55 AM
ThetaginHTML5isusedtodefineasectionofmajornavigationlinks,providingsemanticstructureandimprovingaccessibilityandSEO;itshouldwrapprimarynavigationelementslikemenusortablesofcontents,noteverylinkonapage,andcanbeenhancedwithARIAlabelssuchasaria-label=&q
What is a definition list in HTML5?
Aug 20, 2025 pm 02:01 PM
AdefinitionlistinHTML5iscreatedusingtheelementtogroupterms()withtheirdefinitions(),allowingmultipletermstoshareadefinitionoratermtohavemultipledefinitions,makingitidealforFAQs,glossaries,metadata,andcontactdetailswhileimprovingaccessibilityandSEOthro
How to create a custom checkbox with HTML5
Aug 16, 2025 am 07:05 AM
To create a custom checkbox, you must first use an HTML structure with label to ensure accessibility; 2. Hide the default checkbox through CSS but retain its functionality; 3. Use pseudo-elements and pseudo-classes to draw the selected state on the custom .checkmark elements; 4. Add hover, focus and select styles to enhance interactive feedback; 5. Keep native inputs present to support keyboard navigation and screen readers, and ultimately achieve beautiful and accessible custom checkboxes.
What is the figure element and how is it used with figcaption in HTML5?
Aug 20, 2025 pm 02:06 PM
TheelementinHTML5isusedtomarkupself-containedcontentlikeimages,diagrams,orcodesnippetsthatcanstandindependentlywithinadocument.Itcanbepairedwiththeoptionalelementtoprovideacaptionortitle,whichmayappearasthefirstorlastchildinside.Thiscombinationenhanc
How to preload content with rel='preload' in HTML5?
Aug 20, 2025 pm 04:12 PM
rel="preload" is used to load key resources in advance to improve page performance. 1. Use syntax and specify the as attribute; 2. Preload key resources such as fonts, style sheets, scripts, pictures, etc., and the font needs to be added crossorigin; 3. It can be loaded according to conditions in combination with media attributes; 4. Follow best practices such as loading only key resources on the first screen, avoiding excessive use, and correctly setting type and crossorigin; 5. Modern browsers widely support it, and can dynamically add or perform gradual enhancement processing through JavaScript to ensure that the page still works normally when it is not supported.


