合并两个表单值并发送

Posted

技术标签:

【中文标题】合并两个表单值并发送【英文标题】:Merge two form values and send 【发布时间】:2021-06-07 14:59:05 【问题描述】:

我在提交此合并表单时遇到问题。 如果我使用现在已注释掉的mainForm.submit(),它会提交,但是当我将提交与$.ajax 一起使用时,它不会到达success。我也试过mainForm[0].submit(function() ...,没有任何运气。 有人可以帮我吗?

$(function() 
  var mainForm = $('#mainForm'),
        modalForm = $('#modalForm');


  $('#submitBtn').on('click', function() 
    //mainForm.submit();
    
    console.log($('#mainForm, #modalForm').serialize());

    mainForm.submit(function() 
      var action = $(this).attr('action');

      $.ajax(
        url: action,
        type: 'POST',
        data: $('#mainForm, #modalForm').serialize(),
        success: function() 
          console.log('success');
          //window.location.replace(action);
        
      );
      return false;
    );
  );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form id="mainForm" action="/page/2" method="post">
  <input type="hidden" name="amount" value="1" />
  <input type="hidden" name="currency" value="USD" />
  <input type="hidden" name="recurring" value="true" />
</form>

<div class="modal">
  <form id="modalForm">
    <input type="text" name="firstName" value="Foo" />
    <input type="text" name="lastName" value="Bar" />
    <input type="text" name="emailAddress" value="foo.bar@domain.com" />
  </form>
  
  <button type="button" id="submitBtn">Send</button>
</div>

【问题讨论】:

AJAXify 这个表单 【参考方案1】:

我认为没有必要使用提交,只需在点击按钮功能上使用ajax即可:

$(function() 
  $('#submitBtn').on('click', function() 
      var action = $('#mainForm').attr('action');

      $.ajax(
        url: action,
        type: 'POST',
        data: $('#mainForm, #modalForm').serialize(),
        success: function() 
          console.log('success');
          //window.location.replace(action);
          return true;
        
      );
      return false;
  );
);

【讨论】:

天啊,你说的太对了!我怎么能错过呢?!谢谢@Navand! 还有一个关于脚本的问题。如果 url 是由 action 属性定义的,为什么我需要 window.location.replace(action)?没有它就不会进入下一页。 据我所知,如果您不想将用户移动到新位置或刷新页面,请使用 ajax,否则您通常使用 form.submit 提交表单,该表单会发布您的数据以及将用户重定向到新地址,提交前检查this 以获取更新表单。

以上是关于合并两个表单值并发送的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个单独的 javascript 合并为一个?

比较列值并合并

如何轻松合并两个源文件?

如何发送表单输入值并调用 JSF bean 中的方法

如何捕获表单值并通过电子邮件作为 ajax 请求发送?导轨

从表单中获取所有值并通过Ajax将其发送到页面