Como
form.submit()
, pero ajax. Ligero, moderno, promisificado, utilizafetch
En lugar de provocar una carga de página como lo hace form.submit()
, puede usar pushForm(form)
para enviar un formulario mediante fetch
. Lee automáticamente todos los campos utilizando API modernas y realiza la solicitud exactamente como se describe en los atributos form
.
npm install push-form
// This module is only offered as a ES Module
import pushForm from 'push-form' ;
Dado un elemento de forma regular:
< form action =" submissions.php " type =" post " >
First name < input name =" firstname " required /> < br />
Last name < input name =" lastname " required /> < br />
Passport < input name =" passport " type =" file " required />
< button > Submit </ button >
</ form >
Puedes publicarlo a través de fetch
con:
import pushForm from 'push-form' ;
const form = document . querySelector ( 'form' ) ;
form . addEventListener ( 'submit' , async event => {
event . preventDefault ( ) ;
const response = await pushForm ( ) ;
if ( response . ok ) {
alert ( 'Thanks for your submission!' ) ;
}
} ) ;
O use ajaxifyForm
para que maneje el envío del usuario automáticamente:
import { ajaxifyForm } from 'push-form' ;
const form = document . querySelector ( 'form' ) ;
ajaxifyForm ( form , {
onSuccess : ( ) => { /* ✅ */ } ,
onError : ( ) => { /* */ } ,
} ) ;
Devuelve una Promise
que se resuelve con una Response
exactamente como lo hace fetch
.
Tipo: HTMLFormElement
El formulario a enviar. Sus atributos action
y method
se utilizarán para crear la solicitud HTTP.
Tipo: object
Ejemplo: {headers: {Accept: 'application/json'}}
Esto coincide con el segundo parámetro de fetch
, sin embargo, el body
y method
se anularán con lo que el elemento form
especifica en sus atributos.
Detiene el evento submit
de un formulario y utiliza pushForm
en su lugar. Esto devuelve una function
a la que puede llamar para eliminar el controlador submit
.
Igual que el de pushForm
Tipo: object
Controladores de envío/error opcionales y configuración para la fetch
.
Tipo: function
Ejemplo: (fetchResponse) => {alert('The form was submitted!')}
Se llamará cuando fetch
realice la solicitud y el servidor devuelva una respuesta exitosa ( response.ok
).
Tipo: function
Ejemplo: (error) => {alert('Something happened:' + error.message)}
Se llamará cuando fetch
falle en la solicitud o si el servidor devuelve una respuesta de error ( response.ok === false
)
Igual que el de pushForm
.
querySelector
ligero/ All
contenedor que genera una matriz.DocumentFragment
o un Element
, en unos pocos bytes.