一种需要两个动作的表单(一个本地,一个远程)

时间:2012-04-02 18:38:08

标签: javascript jquery html

我已经阅读了许多链接并尝试了许多示例,但似乎仍无法使其正常工作。任何帮助和建议都将非常受欢迎。

我有一个需要两个动作的表单:

  1. 将包含所有表单数据的电子邮件发送到指定的用户电子邮件地址(可以 做自己的主人)
  2. 将所有表单数据提交到外部服务器(CRM服务器) (外部服务器上没有编辑功能
  3. 完成这两项操作后,将显示一个感谢页面。

    我现在的想法是创建两个表单(用户只能看到一个表单)。

    HTML表单:

    <form id="form1" name="form1" action="">
      form1: Last Name: <input type="text" name="Last Name" id="Last Name" class="copy" value="from A"/>
    </form>
    
    <form id="form2" name="form2" action="externalhost.html">
      <input type='text' name='returnURL' value='thankyou.php'>
      form2: Last Name: <input type="text" name="Last Name" id="Last Name" class="copy" value="target A" />
    </form>
    <input id="myButton" type="submit" value="hit me..." >
    

    当用户输入数据并点击提交时,所有数据都将被复制到第二个表单。

    function form2form(aF1, aF2) { 
     var selection = "#" + aF1 + " .copy";
     jQuery(selection).each(function() {
         document.forms[aF2].elements[jQuery(this).attr('name')].value = jQuery(this).val();
       });           
    }
    

    然后将“form1”提交给自己的服务器以创建和发送电子邮件。

    然后将“form2”提交给外部主机以进入该CRM系统。 “form2”中的一个字段将是一个返回URL,它将是谢谢页面。

    逻辑,直接的方法,

    jQuery(document).ready(function() { 
      jQuery('#myButton').click(function() {
        form2form ('form1', 'form2' );
        jQuery('#form1').submit(); 
        jQuery('#form1').submit(); 
      });
    });
    

    不幸的是,不起作用。

    我当前的jquery代码也无效。

    jQuery(document).ready(function() { 
     jQuery("#myButton").livequery('click', function() { 
         var form = jQuery("#form2");
        var action = form.attr("action");
        var serialized_form = form.serialize();
        jQuery.post(action, serialized_form, submit_first);
      });
    });
    
    
    function submit_first(val) {
       jQuery("#form1").submit();
    }
    

    如果你可以指导我找到一个可行的解决方案,那真的会有所帮助。我一直对这个问题感到头疼太久了。

2 个答案:

答案 0 :(得分:3)

不要重新发明互联网。使用jQuery.ajax()将数据发送到您的服务器。然后转移到外部服务器。

答案 1 :(得分:1)

我要做的是通过ajax将表单提交给两台服务器。

类似的东西:

jQuery("#form1").submit(function() {
  data = jQuery(this).serialize();
  jQuery.post('internal_server', data);
  jQuery.post('external_server', data);

  //redirect to thank you page, etc.
  return false; // Prevent normal form submission
});