微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OnSubmit方法准备要在操作中发送的数据

如何解决OnSubmit方法准备要在操作中发送的数据

这将是问题的后续内容[表单的“动作”和“提交”:哪个先执行?] [1] 得出的结论是先运行onSubmit,然后完成提交表单的操作。

我想编写我的onSubmit方法来清理将要发送的POST提交;有没有一种方法可以修改发送到服务器的POST消息,而不是通过更改字段的值,而是更改其组成?

例如,我的表格由两个字段组成,名称和姓氏。提交操作最终将发送一个POST正文,例如:

name=John&surname=Doe

但我希望POST正文为

fullname=John_Doe

实际上,我对如何解决此问题一无所知,因此,在任何地方可以找到有关此问题的文档的提示都会受到赞赏-我不想窃取执行此操作的代码,但是有些提示开始。

谢谢! [1]:A form's "action" and "onsubmit": Which executes first? _

解决方法

您可以通过在发送请求之前修改表单数据来实现此目的。
但是您需要自己发送请求。

const form = document.querySelector("form");

form.addEventListener("submit",e => {
  e.preventDefault();

  let preparedData = new FormData(form);
  preparedData.append(
    "fullName",`${preparedData.get("firstName")} ${preparedData.get("lastName")}`
  );

  console.log("Fullname: " + preparedData.get("fullName"));
  var request = new XMLHttpRequest();
  request.open("POST","http://example.com/submitform.php");
  request.send(preparedData);
});

示例: https://stackblitz.com/edit/js-yia2yg?file=index.js

,

要停止表单操作,可以调用onSubmit方法:

<form action="/action_page.php" onsubmit="myFunction()">
  Enter first name: <input type="text" name="fname">
  Enter last name: <input type="text" name="lname">
  <input type="submit" value="Submit">
</form>
function myFunction(evt) { 
  evt.preventDefault();

  let data = {
    fullname: //place the data you need to send here
  };

  fetch("/post/data/here",{
    method: "POST",body: JSON.stringify(data)
  }).then(res => {
    console.log("Request complete! response:",res);
  });
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。