7

我有一个收集客户信息的表格,然后它

  • 将它们保存在数据库中
  • 发出几封电子邮件
  • 将信息发送到 SalesForce (SF) 部门

现在,前两个两个任务很容易,但第三个给我带来了麻烦。对于 SF,我没有做任何特别的事情,只需添加他们的 url,他们就会从表单中提取他们需要的所有必要信息。在我看来,为了做到这些,我需要表单具有与一个提交按钮关联的 2 个操作(不能有 2 个表单或 2 个按钮)。

所以在我的raf.php文件中我有这个表单,提交后我必须将它们重定向到raf-submitted.php显示成功/错误消息和其他必要信息的页面。

表格 (从这里得到想法)

 <form id="referralForm" name="referralForm" autocomplete="off" enctype="multipart/form-data" method="POST">

 <input id="saveForm" name="saveForm" class="field-submit" type="button" value="Submit" style="padding-left:20px" width="100" tabindex="23" onclick="FormSubmission(); SalesForceSubmission();" />

 </form>

JavaScript:

 $(document).ready(function()
 { 
    function SalesForceSubmission()
    {
       document.referralForm.action = "https://someAddress.salesforce.com/";
       document.referralForm.submit();          
       return true;
    }

    function FormSubmission()
    {
       document.referralForm.action = "raf-submitted.php";
       document.referralForm.submit();          
       return true;
    }
  });

raf-submitted.php文件负责表单验证、数据库插入和电子邮件问题。

它不工作。我也试过这些没有运气:

有人可以帮帮我吗?谢谢!

4

5 回答 5

2

提交表单后,您将不再位于该页面上。你已经离开了。

另一种方法是通过 AJAX 提交第一个操作,然后自然地将表单提交到第二个目的地。我建议使用 jQuery 来进行 AJAX 调用,因为大多数 AJAX 代码已经在那里供您使用。

另一种选择是在raf-submitted.php收到表单数据后从您的服务器执行 POST 到 salesforce 服务器。请参阅:在 PHP 脚本中发布到另一个页面

于 2013-01-30T21:44:07.360 回答
2

在客户端执行此操作的唯一方法是使用 AJAX。
最好在服务器端做 SF 的东西(如果你有访问权限,则通过 DB 或 Web 服务,如果他们有一个或至少在服务器端通过 CURL 发送数据)。
可能有一个提交在客户端失败(如果第二个失败似乎很糟糕 - 第一个请求不知道第二个没有正确完成)。


编辑:
使用 CURL 发布的示例代码:
假设您有一个带有 atext和一个hidden输入的表单:

<form method='post' action='http://your.sf.site/your_sf_submit_page.php'>
<input type='text' name='field1'/>
<input type='hidden' name='field2'/>
</form>

你可以像这样使用 CURL 提交它:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://your.sf.site/your_sf_submit_page.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,"field1=value1&field2=value2");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);

然后您可以检查$server_output是否正确提交了表单。

于 2013-01-30T21:49:38.517 回答
0

如果您可以控制 raf-submitted.php 页面,我建议您对表单进行 onclick 操作(在本地验证之后)使用 jQuery.ajax 调用您的页面,在查询中提供字段值作为参数字符串(如果使用 GET)然后简单地允许提交过程继续将数据传递给 SalesForce。

但是,如果您需要使 Salesforce 活动不可见,那么您可以使用 type=POST 以相同的方式调用它们,并在完成后移交给您的表单

于 2013-01-30T21:49:21.137 回答
0
function fun_atualizar() {
    document.orcamento.action = "atualizar_orcamento.php";
    document.orcamento.submit();
    return true;
}

function fun_evento() {
    document.orcamento.action = "Evento_orc.php";
    document.orcamento.submit();
    return true;
}

<input  type="button" value="Atualizar" style="padding-left:20px" width="100" tabindex="23" onclick="javascript:fun_atualizar();" />

<input  type="button" value="Evento" style="padding-left:20px" width="100" tabindex="23" onclick="javascript:fun_evento();" />
于 2013-09-12T13:01:23.030 回答
0

这看起来很像我试图做的事情。您已经标记了一个答案,但我认为这不是您要寻找的简单答案。

假设上面的任务 3 可以通过 POST 到某个 SalesForce .PHP 位置来完成,并且前两个任务可以在 JavaScript 函数中完成,我认为这会起作用:

<form method="post" action="SubmitToSalesForce.php">
  <button type="submit" name="doThreeThings" onclick="doTheFirstTwoTasks();" >
</form

<script type="text/javascript">
  function doTheFirstTwoTasks() {
    // Task 1
    // Task 2
  }
</script>

它首先调用doTheFirstTwoTasks()函数 viaonclick=来执行任务 1 和 2,然后通过正常的表单提交将表单提交到action=第三个任务的位置。

没什么特别的,但我不知道有多少人知道您可以在一个表单中通过一个提交按钮使用onclick= and type=submit (with ) 来执行两个不同的操作。action=

在上面的代码中,似乎调用了onclick=before action=(或者可能只是因为 POST 提交比调用 JavaScript 函数慢......)

于 2017-07-07T05:55:10.570 回答