【问题标题】:Vanilla JavaScript AJAX form submitVanilla JavaScript AJAX 表单提交
【发布时间】:2022-01-25 09:35:18
【问题描述】:

我需要帮助才能在 Vanilla JavaScript(无 jQuery)中使用 AJAX 提交表单。 我有这个需要转换为 JavaScript 的 jQuery 代码。

  $(document).ready(function() {
    $('.myForm').submit(function (event) {
      var data = $(this);
      $.ajax({
        type: data.attr('method'),
        url: data.attr('action'),
        data: data.serialize(),
        success: function (data) {

        }
      });
      event.preventDefault();
    });
  });

【问题讨论】:

标签: javascript ajax forms


【解决方案1】:

您可以使用内置的 Fetch API 进行 AJAX 调用,使用 FormData 解析您的表单。

除此之外,只需将您的 jquery 替换为事件侦听器、查询选择器和属性获取器。

document.addEventListener('DOMContentLoaded', function() {
  document.querySelector('.myForm').addEventListener('submit', function (event) {
    var data = this;
    fetch(data.getAttribute('action'), {
      method: data.getAttribute('method'),
      body: new FormData(data)
    }).then(res=>res.text())
      .then(function (data) {
        
      });
    event.preventDefault();
  });
});

【讨论】:

  • 谢谢,我会试一试。但您好像漏掉了 2 个括号?
  • @TimLevinsson 是的,已修复
  • 我试过了。我正在尝试从 php 文件中获取数据,就像使用 jQuery 一样。我试过这样 document.addEventListener('DOMContentLoaded', function() { document.querySelector('.myForm').addEventListener('submit', function (event) { var data = this fetch(data.getAttribute('action' ), { method: data.getAttribute('method'), body: new FormData(data) }).then(res=>res.text()) .then(function (data) { console.log(data) } ) event.preventDefault() }) })
  • 对不起,我不知道如何在 cmets 中包装代码...
  • 无论如何,问题是当我执行 console.log(data) 时,它不会从 php 文件返回内容。它返回 html 文件中的所有 html 代码
猜你喜欢
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2022-12-31
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多