Những người tìm kiếm trên internet trong tương lai:
Đối với các trình duyệt mới (kể từ năm 2018: Chrome, Firefox, Safari, Opera, Edge và hầu hết các trình duyệt di động, nhưng không phải IE), fetch
là một API tiêu chuẩn giúp đơn giản hóa các cuộc gọi mạng không đồng bộ (mà chúng ta thường cần XMLHttpRequest
hoặc jQuery $.ajax
).
Đây là một hình thức truyền thống:
<form id="myFormId" action="/api/process/form" method="post">
<!-- form fields here -->
<button type="submit">SubmitAction</button>
</form>
Nếu một biểu mẫu như ở trên được trao cho bạn (hoặc bạn đã tạo nó vì nó là html ngữ nghĩa), thì bạn có thể gói fetch
mã trong trình nghe sự kiện như dưới đây:
document.forms['myFormId'].addEventListener('submit', (event) => {
event.preventDefault();
// TODO do something here to show user that form is being submitted
fetch(event.target.action, {
method: 'POST',
body: new URLSearchParams(new FormData(event.target)) // event.target is the form
}).then((resp) => {
return resp.json(); // or resp.text() or whatever the server sends
}).then((body) => {
// TODO handle body
}).catch((error) => {
// TODO handle error
});
});
(Hoặc, nếu như người đăng ban đầu bạn muốn gọi thủ công mà không cần gửi sự kiện, chỉ cần đặt fetch
mã ở đó và chuyển tham chiếu đến form
phần tử thay vì sử dụngevent.target
.)
Tài liệu:
Lấy
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
Khác:
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_ENC_JavaScript
Trang đó trong năm 2018 không đề cập đến tìm nạp (chưa). Nhưng nó đề cập rằng thủ thuật target = "myIFrame" không được dùng nữa. Và nó cũng có một ví dụ về form.addEventListener cho sự kiện 'gửi'.