📅  最后修改于: 2023-12-03 15:38:53.596000             🧑  作者: Mango
当一个表单被提交时,我们可以通过Javascript获取它所发送的数据。这种方式被称为AJAX请求,它可以在不刷新页面的情况下向服务器发送数据并接收响应。
首先,我们需要在表单元素上添加一个onsubmit
事件监听器,以便在表单提交时调用我们的JavaScript函数。
<form id="myForm" onsubmit="submitForm(event)">
<!-- form elements -->
</form>
<script>
function submitForm(event) {
event.preventDefault();
// code to be executed when the form is submitted
}
</script>
在submitForm
函数内部,我们可以使用FormData
对象来收集表单的数据。FormData
对象提供了一种方便的方式来构建表单数据的键/值对列表,我们可以将其发送给服务器。
function submitForm(event) {
event.preventDefault();
// get form data
const formData = new FormData(event.target);
// log form data to console
for (const [key, value] of formData.entries()) {
console.log(key + ': ' + value);
}
}
在上面的代码中,我们首先创建了一个新的FormData
对象,并将表单元素传递给它。然后,我们迭代FormData
对象中的键/值对列表,并将日志输出到控制台。
现在我们已经收集了表单数据,我们可以通过AJAX请求将其发送给服务器。
function submitForm(event) {
event.preventDefault();
// get form data
const formData = new FormData(event.target);
// send data to server
const xhr = new XMLHttpRequest();
xhr.open('post', '/api/submit-form');
xhr.send(formData);
// handle response from server
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);
}
};
}
在上面的代码中,我们创建了一个新的XMLHttpRequest
对象,并使用open
方法指定请求的方法(post
)和URL(/api/submit-form
)。我们然后使用send
方法将FormData
对象发送到服务器。
在我们收到服务器的响应时,我们使用onreadystatechange
事件监听器来检查响应的状态码(200
表示成功)并在控制台中记录响应的内容。(在实际的应用中,您可能希望采取其他措施,例如将响应反馈给用户或更新UI。)
使用上述方法,我们可以轻松地从表单中收集数据并将其发送到服务器。请注意,我们使用的是原生JavaScript,而不是任何第三方库或框架。这使得我们的代码更轻量化、简洁和可维护。