📜  ajax 表单提交 - Javascript (1)

📅  最后修改于: 2023-12-03 15:13:17.688000             🧑  作者: Mango

Ajax表单提交 - Javascript

Ajax是一种在不刷新整个页面的情况下更新部分页面的技术。在Web应用程序中,Ajax被用于异步地加载数据、提交表单、刷新部分页面等等。在本文中,我们将介绍Ajax表单提交,它使得用户可以在不离开页面的情况下提交表单。

实现Ajax表单提交的步骤
  1. 创建表单。在HTML中,我们可以使用<form>标签来创建表单。表单中的各个字段使用<input><select><textarea>等标签来创建。

    <form id="myForm" action="/submit-form" method="POST">
      <label for="name">Name:</label>
      <input id="name" type="text" name="name" />
      <br />
      <label for="email">Email:</label>
      <input id="email" type="email" name="email" />
      <br />
      <button type="submit">Submit</button>
    </form>
    
  2. 阻止表单的默认提交行为。当用户点击表单中的提交按钮时,表单会默认提交到指定的URL。我们需要使用Javascript阻止这一默认行为。

    const form = document.querySelector('#myForm');
    form.addEventListener('submit', (e) => {
      e.preventDefault();
    });
    
  3. 使用Ajax提交表单数据。在阻止了表单的默认提交行为之后,我们可以使用XMLHttpRequest对象或者fetch API来提交表单数据。

    const form = document.querySelector('#myForm');
    form.addEventListener('submit', (e) => {
      e.preventDefault();
    
      const formData = new FormData(form);
    
      fetch('/submit-form', {
        method: 'POST',
        body: formData
      })
      .then(response => response.json())
      .then(data => {
        console.log(data);
      })
      .catch(error => {
        console.error(error);
      });
    });
    

    上面的代码使用fetch API来提交表单数据。FormData对象用于收集表单中的数据。fetch的第一个参数是一个URL,指定了表单数据将被发送到哪个URL。第二个参数是一个配置对象,指定了请求的方法(POST)、请求的body(FormData对象)等。

  4. 处理服务器响应。当服务器返回响应时,我们需要处理这些响应。在上面的代码中,我们使用了response.json()方法将响应解析为JSON格式的数据。我们还可以使用其他的解析方法来获取服务器返回的内容,例如response.text()方法、response.blob()方法等等。

    const form = document.querySelector('#myForm');
    form.addEventListener('submit', (e) => {
      e.preventDefault();
    
      const formData = new FormData(form);
    
      fetch('/submit-form', {
        method: 'POST',
        body: formData
      })
      .then(response => response.json())
      .then(data => {
        console.log(data);
      })
      .catch(error => {
        console.error(error);
      });
    });
    
示例代码

下面是一个完整的示例代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Ajax Form Submit</title>
  </head>
  <body>
    <form id="myForm" action="/submit-form" method="POST">
      <label for="name">Name:</label>
      <input id="name" type="text" name="name" />
      <br />
      <label for="email">Email:</label>
      <input id="email" type="email" name="email" />
      <br />
      <button type="submit">Submit</button>
    </form>

    <script>
      const form = document.querySelector('#myForm');
      form.addEventListener('submit', (e) => {
        e.preventDefault();

        const formData = new FormData(form);

        fetch('/submit-form', {
          method: 'POST',
          body: formData
        })
        .then(response => response.json())
        .then(data => {
          console.log(data);
        })
        .catch(error => {
          console.error(error);
        });
      });
    </script>
  </body>
</html>
总结

以上介绍了如何使用Ajax提交表单数据。使用Ajax,我们可以在不刷新整个页面的情况下提交表单,提高了用户体验。然而,需要注意的是,使用Ajax也有一些缺点,例如无法处理文件上传等情况。在实际开发中,我们需要根据具体情况来选择合适的提交方式。