繁体   English   中英

如何使用Jquery或Javascript同时保存两个不同的表单?

[英]How can i Save two different forms At the same time Using Jquery or Javascript?

我打算保存2个表单,但第一个表单是我获取第二个表单的外键的地方

这是我尝试使用Javascript进行保存

$("#btnSave").click(function (e) {
        e.preventDefault();
        $('#workForm').submit();
        $('#contForm').submit();
    });

但是它在控件中的“联系表单提交”上出错,因为在保存作为其外键的联系表单时,工作表单的ID仍然为空

我如何使用Jquery和Javascript处理此问题?

我也尝试过这种方法

$("#btnSave").click(function (e) {
        e.preventDefault();


        if (Id != 0) {
            $('#workForm').submit();
            $('#contForm').submit();
        } else {
           $('#workForm').submit(); }
    });

但是它只能在其他地方使用,因为ID为null

我希望有人可以在这里帮助我

谢谢:D Worker地址是WorkForm Worker联系人是ContForm

当它们填充所有文本框时,我都想保存它们

在此处输入图片说明

这是我的AJAX建议的工作方式:

$.post("/form1.php", {
  //form data here
}, function (data) { // get data to use in the second form
    $.post("/form2.php", {
      //form data here
    }, function () {

    });
});

但是,我与其他所有人都同意只使用一种表格。

您最初是如何提交表格的?

当然,您最需要使用AJAX。 对于每个ajax调用,您都可以指定响应处理程序功能。 当第一个AJAX调用的响应返回时,您可以使用AJAX启动第二个表单的保存。

现在,您实际上在AJAX调用中做了什么。 您应该使用诸如form2js或jquery序列化功能之类的插件将表单内容序列化为JSON。 然后使用$ .ajax进行发布(请注意:这与常规表单提交不同)。 在成功响应中,您需要确保服务器返回使用AJAX提交第二个表单所需的必要信息。 收到响应后,进行必要的UI更新,收集提交第二个表单所需的信息,对其进行序列化,然后使用另一个$ .ajax再次发送。

以下是一个粗略的代码结构。

function submitForms() {
   var form1Contents = serialize_form1_to_json;
   $.ajax({ 
       url: form1_action_url,
       type: "POST",
       data: form1Contents
   }).done(function (data) {
      //data is the response of first form save from server. should contain the id you need for form 2
      var form2Contents = serialize_form2_to_json;
      set_id and any other details from form1 _on_form2
      $.ajax({
       url: form2_action_url,
       type: "POST",
       data: form2Contents
      }).done(function(){
         alert('both forms saved.');
      });
   });
}

注意:要提交的表单必须与包含表单的页面位于同一域。 由于安全问题,不允许跨域使用AJAX。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM