【问题标题】:Submit form to two places提交表格到两个地方
【发布时间】:2014-07-19 08:35:08
【问题描述】:

我有一个问题,我需要一个简单的联系表单才能发布到数据收集服务的操作,以及用于转化跟踪的感谢页面。

不幸的是,数据收集服务页面不允许任何类型的重定向,所以我最好的办法是向两个感谢页面和数据收集服务提交。

我只是不知道该怎么做……有人可以引导我朝着正确的方向前进吗?我已经做了很多搜索,但无法真正使用 jquery 或 javascript。

任何建议/反馈/方法将不胜感激。

根据下面的回复,我试图让 AJAX 在将数据发送到这样的收集服务后重定向,但我无法让它工作:

  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
  <script type="text/javascript">
  // Shorthand for $( document ).ready()
  $(function() { $("#ajaxform").submit(function(e)
 {
 var postData = $(this).serializeArray();
 var formURL = $(this).attr("action");
 $.ajax(
 {
    url : formURL,
    type: "POST",
    data : postData,
    success:function(data, textStatus, jqXHR) 
    {
        window.location.replace("http://example.com");
    },
    error: function(jqXHR, textStatus, errorThrown) 
    {
        //if fails      
    }
});
e.preventDefault(); //STOP default action
e.unbind(); //unbind. to stop multiple form submit.
}); });
</script>
<form name="ajaxform" id="ajaxform" action="https://secure.velocify.com/Import.aspx?Provider=IdealHomeLoansWebPOST&Client=IdealHomeLoansLLC&CampaignId=46"method="POST">

【问题讨论】:

  • 感谢页面真的需要数据吗?重定向就足够了吗?
  • 这个问题似乎离题了,因为它缺乏足够的信息来诊断问题。
  • 感谢页面不需要数据,它主要用于跟踪人们提交表单的情况。数据收集服务使用表单的数据,但它们是专有的,只是收集提交给它们的数据。
  • 您可以将相同的变量用于不止一件事。

标签: php jquery post contact-form


【解决方案1】:

提交到感谢页面并让感谢页面向数据收集服务发出 CURL 请求。

或者,提交到提交 CURL 请求的中间页面,然后重定向到感谢页面。

【讨论】:

    【解决方案2】:

    我能想到的最直接的方法是为您的提交按钮设置一个onClick 处理程序,然后使用 JavaScript 向包含表单数据的数据收集服务发出某种 XHR 发布请求。然后您将return true 和浏览器将发布到感谢页面。

    例如使用 JQuery(您的代码将需要更多检查和复杂性)

    HTML:

    <form id="form" action="somewhere.php" method="post">
      <!-- form stuff here -->
      <input type="submit">
    </form>
    

    JS:

    $('#form').submit(function() {
      $.post('somewhereElse.php', {data: $('#form-element').val()});
      return true;
    });
    

    【讨论】:

    • 你应该为表单的提交事件添加一个监听器。
    • 我要试试这个方法...谢谢。如果可行,将在此处发布。
    • 嗯,所以当我尝试它时,该代码似乎没有做任何事情,但我想我理解你的逻辑。 “谢谢”页面不需要将表单的数据提交给它,它只需要用户访问该页面,以便他们可以跟踪访问过该页面的人。当我尝试代码时,它可以很好地提交给数据收集服务,但没有打开感谢页面。嗯。
    • 老实说,我认为@Felk 给出了最好的答案
    【解决方案3】:

    JQuery Ajax Post,可能必须将其设置为异步。 从第一个提交成功后,您可以提交到第二个。然后在成功时您可以重定向到感谢页面。

    【讨论】:

      【解决方案4】:

      使用 jQuery,您可以将所有内容发送到您的数据收集服务并等待答复。如果成功,请重定向到感谢页面。

      你需要知道的一切都可以在这篇文章中找到:http://hayageek.com/jquery-ajax-form-submit/

      $(function() {
          $("#ajaxform").submit(function(e)
          {
              var postData = $(this).serializeArray();
              var formURL = $(this).attr("action");
              $.ajax(
              {
                  url : formURL,
                  type: "POST",
                  data : postData,
                  success:function(data, textStatus, jqXHR) 
                  {
                      //data: return data from server
                  },
                  error: function(jqXHR, textStatus, errorThrown) 
                  {
                      //if fails      
                  }
              });
              e.preventDefault(); //STOP default action
              e.unbind(); //unbind. to stop multiple form submit.
          });
      });
      

      这会将默认的表单提交替换为 AJAX 请求。

      然后只需使用以下代码重定向到感谢页面:

      window.location.replace("http://example.com");
      

      【讨论】:

      • 嗯,很抱歉我没有遵循这个。你知道这需要放在上面提到的代码中的什么位置吗? window.location.replace("example.com");
      • 在匿名成功函数中,注释说“//数据:从服务器返回数据”。变量“数据”是您的收集服务返回的内容。如果您想检查是否有否定响应,您也可以验证这一点。
      • 所做的工作如下: 1. 此代码使用 AJAX 将表单数据提交到您的数据收集页面 2. 如果成功,它将用户重定向到您的感谢页面 这是最好的解决方案我想对你来说
      • 酷,谢谢,是的,我正在试一试...我不是 AJAX 的高手,所以我可能需要一些帮助,我很难关注那个网站的演示以及我需要在我的身上实施什么。
      • 所以,我很难进行此设置...我以前从未在 ajax 中工作过,当我将该代码粘贴到我的表单中时,表单会提交给数据收集服务,但是之后它不会重定向...如果有人可以帮助我,我已将我正在使用的代码粘贴到我的原始帖子中?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      • 2010-12-28
      相关资源
      最近更新 更多