Как
form.submit(), но с использованием ajax. Легкий, современный, многообещающий, используетfetch
Вместо того, чтобы вызывать загрузку страницы, как это делает form.submit() , вы можете использовать pushForm(form) для отправки формы через fetch . Он автоматически считывает все поля с помощью современных API и выполняет запрос точно так, как описано в атрибутах form .
npm install push-form
// This module is only offered as a ES Module
import pushForm from 'push-form' ; Учитывая обычный элемент формы:
< 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 > Вы можете опубликовать его через fetch с помощью:
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!' ) ;
}
} ) ; Или используйте ajaxifyForm , чтобы он автоматически обрабатывал отправку пользователя:
import { ajaxifyForm } from 'push-form' ;
const form = document . querySelector ( 'form' ) ;
ajaxifyForm ( form , {
onSuccess : ( ) => { /* ✅ */ } ,
onError : ( ) => { /* */ } ,
} ) ; Возвращает Promise , которое разрешается с помощью Response точно так же, как это делает fetch .
Тип: HTMLFormElement
Форма для отправки. Его атрибуты action и method будут использоваться для создания HTTP-запроса.
Тип: object
Пример: {headers: {Accept: 'application/json'}}
Это соответствует второму параметру fetch , однако body и method будут переопределены тем, что элемент form указывает в своих атрибутах.
Останавливает событие submit формы и вместо этого использует pushForm . Это возвращает function , которую вы можете вызвать, чтобы удалить обработчик submit .
То же, что и в pushForm
Тип: object
Дополнительные обработчики отправки/ошибок и конфигурация для fetch .
Тип: function
Пример: (fetchResponse) => {alert('The form was submitted!')}
Он будет вызван, когда fetch выполнит запрос и сервер вернет успешный ответ ( response.ok ).
Тип: function
Пример: (error) => {alert('Something happened:' + error.message)}
Он будет вызван, когда fetch не выполнит запрос или если сервер вернет ответ с ошибкой ( response.ok === false )
То же, что и в pushForm .
querySelector / All , которая выводит массив.DocumentFragment или один Element в несколько байтов.