使用 jquery-ajax 在多个表单中提交一个表单

Posted

技术标签:

【中文标题】使用 jquery-ajax 在多个表单中提交一个表单【英文标题】:to submit a form among multiple forms using jquery-ajax 【发布时间】:2013-10-11 12:13:43 【问题描述】:

我有多个具有相同类名的表单

<form >
  <input type="hidden" value="<%=ids%>" name="idd">
  <input type="hidden" value="<%=email%>" name="cby">
  <input type="text" class="cmd" name="cm" style="width:300px;" placeholder="comment">
  <input type="submit" value="" style="display:none;">
</form>
  <!-- n number of forms are  generated using while loop-->
<form>
  <input type="hidden" value="<%=ids%>" name="idd">
  <input type="hidden" value="<%=email%>" name="cby">
  <input type="text" class="cmd" name="cm" style="width:300px;" placeholder="comment">
  <input type="submit" value="" style="display:none;">
</form>

那么我如何在我尝试使用的这 n 个表单中提交一个表单

   $(function () 
          $('form').on('submit', function (e) 
                $.ajax(
                 type: 'post',
                  url: 'addfr.jsp',
                  data: $('form').serialize(),
                  success: function () 
                  location.reload();

                  
          );
         e.preventDefault();
     );
  );

但它总是提交 n 形式中的第一种形式。 如何在 n 种形式中提交随机形式。 请任何人帮助我。

【问题讨论】:

同类型问题***.com/questions/16638181/… 【参考方案1】:

序列化时需要用this引用表单...

$(function () 
    $('form').on('submit', function (e) 
        $.ajax(
            type: 'post',
            url: 'addfr.jsp',
            data: $(this).serialize(),
            success: function () 
                location.reload();
            
        );
        e.preventDefault();
    );
);

【讨论】:

+1 比我快了半秒,但这似乎是问题所在,每次触发其中一个表单上的提交事件时都会序列化所有表单。 @adeneo 您需要充分润滑才能在此站点上足够快,不是吗!只要他们得到答案:) $(this).serialize()ajax 中可能不起作用,因此您应该为this reference 使用一个变量,然后再使用它。 @RohanKumar - 没有新的作用域,所以this 可以正常工作。 @HarikaChoudaryKanikanti “不工作”是什么意思?实际发生了什么?【参考方案2】:

使用此关键字。它将提交触发事件的表单。

你为什么要使用 location.reload?

$('form').on('submit', function (e) 
    $.ajax(
    type: 'post',
    url: 'addfr.jsp',
    data: $(this).serialize(),
    success: function () 
        location.reload();
    
 );

【讨论】:

【参考方案3】:
 You can try this...

 function submitForm()
document.formName.action="actionName";
document.formName.submit();
 


 <form method="post" name="formName" enctype="multipart/form-data">
  ....
 <input type="button" onclick="submitForm()"/>
 <form>

【讨论】:

以上是关于使用 jquery-ajax 在多个表单中提交一个表单的主要内容,如果未能解决你的问题,请参考以下文章

通过 Jquery-Ajax 提交复选框表单 [关闭]

Django 表单未使用 Javascript 提交

SpringMVC jquery-ajax 搭建服务器FTP

JS-AJAX and jQuery-AJAX

如何使 JQuery-AJAX 请求同步

JQuery-Ajax后台提交数据与获取数据