This ponyfill implements the FormData
serialization algorithm. It aims to be compatible with calling the native new FormData(form).entries()
. jQuery's serializeArray
is another implementation example.
import formDataEntries from 'form-data-entries'
for (const [name, value] of formDataEntries(myForm)) {
console.log(`${name}=${value}`)
}
This package implements FormData.entries
as a module ponyfill rather than a polyfill. FormData.entries
was a later addition to the FormData
specification. Therefore browsers may support FormData
but not the entries
method. It would be dangerous to attempt to fill just this additional entries
method in browsers that have partial support. This module only implements entries
as a standalone function which will even work in browsers with no FormData
support.
However, once FormData.entries
is widely supported this package should be considered obsolete.
This module makes a best effort to match the behavior of native FormData.entries
. It should be possible in the future to replace calls to formDataEntries(form)
with new FormData(form).entries()
. However, there are some cases where this module can not fully match the native behavior.
- If the form contains any
<input type=file>
elements, the behavior is considered undefined and should not be relied upon. - In Safari when
FormData
is constructed on the submit event, it will include thesubmitter
value. This behavior does not exist in other browsers, and is not and can not be implemented in the ponyfill since thesubmitter
element is not exposed.