javascript - 使用ajax在表单外部提交带有按钮的表单

标签 javascript jquery html ajax

我尝试使用 ajax 发布表单,但当前代码无法正常工作。当我按下保存按钮时,表单被提交了 n + 1 次。即刷新页面后提交一次,下次我提交两个表单被提交,第三次......等等。

我已经花了很多时间研究这个问题(2 天),但我还没有找到与我所问的问题非常相似的问题。

我在这里的学习曲线很陡,所以我希望有人能指出我做错了什么。

我想我可能搞混了。提交的步骤是。

  1. 正在填写表单值。
  2. 按下按钮以显示模态以确认提交表单(提交按钮实际上位于此模态内而不是表单本身内)。
  3. 表单已提交。

$('#confirmYes').click(function() {
  $('#confirm-object').modal('hide'); // close confirm modal
  $('#newForm').submit(function (e) {
    e.preventDefault();
    let formData = $(this).serialize();
    
    $.post({
      type: 'POST',
      url: '/api/pois/',
      data: formData
    })
<form id="newForm">
  <input type="text" id="name" name="name">
  <input type="text" id="company" name="company">
</form>
    
<div class="modal-footer">
  <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
  <button type="submit" class="btn btn-success" form="newForm" id="confirmYes">Save</button>
</div>

最佳答案

问题是因为您在每次点击时都创建了一个新的 submit 事件处理程序。根据您想要执行的操作的描述,您需要在页面加载时创建一个提交处理程序,并在单击按钮时触发它。像这样:

$('#newForm').submit(function(e) { // handle the submit event
  e.preventDefault();
  let formData = $(this).serialize();

  $.post({
    type: 'POST',
    url: '/api/pois/',
    data: formData
  })
})

$('#confirmYes').click(function() {
  $('#confirm-object').modal('hide');
  $('#newForm').submit(); // trigger the submit event
});

关于javascript - 使用ajax在表单外部提交带有按钮的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48782690/

相关文章:

javascript - onChange 时自动提交选择

javascript - 无法让 JavaScript 导航栏工作

html - 分层结构中绘制连接器的非图像解决方案

javascript - Google Charts 中的动态数据加载

javascript - Angular ng-repeat 和过滤器错误(版本 1.1.5 有效,1.2.15 有错误)

javascript - 出现此错误 - 无法获取未定义或空引用的属性 'mData'

javascript - 如何在 HTML Canvas 中不使用 charcode 静态声明字母

javascript - 替换某些字符之前/之后的空格

javascript - 在javascript中单击文本时如何获取字符位置

javascript - React/Firebase 错误 : Cannot read property 'database' of undefined