如何将数据附加到请求 form.submit()

Posted

技术标签:

【中文标题】如何将数据附加到请求 form.submit()【英文标题】:How to append data to request form.submit() 【发布时间】:2021-06-04 18:46:10 【问题描述】:

我正在尝试使用 POST 提交表单,但我有一些来自 <p> 标记的附加数据,这些数据已存储到 JS 对象中。当我从 javascript 中点击 form.submit() 时,我想将其发送到服务器。

<p> the text i want to send </p>
<form action="url" id="invoice-form">
    <input type="text" name="input"> 
</form>


Edit:[Updated Title]
<a id="submit" type="button">Submit</a>

<script>
let data = $('p').text()

$('#invoice-form').submit()

我想要做的是发送datasubmit 事件

【问题讨论】:

标题中的“JSON”引用是什么意思? 我将使用 .stringify() 将 JS 对象转换为 JSON 后将数据发送到服务器 【参考方案1】:

您可以将onclick 处理程序附加到按钮并使用fetch 将JSON 格式的数据发送到服务器。

const onclick = (e) => 
  const data = 
    data: document.querySelector('input').value
  


  e.preventDefault();

  fetch("/server-end-point", 
    method: 'POST',
    mode: 'no-cors',
    cache: 'no-cache',
    credentials: 'same-origin',
    headers: 
      'Content-Type': 'application/json'
    ,
    body: JSON.stringify(data) // body data type must match "Content-Type" header
  );


const button = document.querySelector('#submit');

button.onclick = onclick;
<p> the text i want to send </p>
<form action="url" id="invoice-form">
    <input type="text" name="input"> 
    <button id="submit" type="button">Submit</button>
</form>

有关 Fetch 的更多信息: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch您的浏览器目标是否支持 fetch: https://caniuse.com/fetch

【讨论】:

我很欣赏您的回复,但我想同步进行,这就是为什么我没有使用它,因为它的工作性质。【参考方案2】:

标题中的 JSON 似乎不相关

    将链接更改为提交按钮 添加复制数据的提交事件处理程序 允许提交发送到服务器

$("#invoice-form").on("submit", function(e) 
  let data = $('p').text()
  $("#input").val(data)
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p> the text i want to send </p>
<form action="url" id="invoice-form">
  <input type="text" name="input" id="input">
  <input type="submit">
</form>

如果要 Ajax 值,只需更改为这个

$("#invoice-form").on("submit", function(e) 
  e.prevenDefault();
  let data = $('p').text()
  $.post(this.action,"input":data)
);

【讨论】:

问这么简单的问题我觉得很傻。 我想同步,你的回答就可以了。谢谢@mplungjan @Andreas 更新了解释 有没有办法将数据传递到 QueryDICT 中?? google.com/…

以上是关于如何将数据附加到请求 form.submit()的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 WYSIWYG 发送到数据库 (Vue.js)

ie9 form submit 请求参数问题替代办法

如何使用 Vuejs 发送电子邮件?

submit 提交

如何将用户凭据附加到 expressjs 中的请求管道?

Laravel ajax存储请求errormessage,数据附加到视图