[英]One form, One submission button, but TWO actions
我有一個表單收集客戶的信息然后它
現在,前兩個任務很簡單,但第三個任務給我帶來了麻煩。 對於SF我沒有做任何特別的事情,只需要添加他們的網址,他們將從表單中提取他們需要的所有必要信息。 對我來說,似乎為了做這些我需要表單有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
文件負責表單驗證,數據庫插入和電子郵件問題。
它不起作用。 我也試過這些沒有運氣:
有人可以幫幫我嗎? 謝謝!
提交表單后,您將不再訪問該頁面。 你已經離開了。
另一種方法是通過AJAX提交第一個動作,然后將表單自然地提交到第二個目的地。 我建議使用jQuery來進行AJAX調用,因為大多數AJAX代碼已經可供您使用了。
另一個選擇是讓raf-submitted.php
在收到表單數據后從服務器執行POST到salesforce服務器。 請參閱: 發布到PHP腳本中的另一個頁面
在客戶端執行此操作的唯一方法是使用AJAX。
最好在服務器端執行SF內容(如果您有訪問權限,則通過數據庫或Web服務,如果他們有一個或至少通過服務器端的CURL發送數據)。
在客戶端可能有一個提交失敗(如果第二個失敗,它似乎很糟糕 - 第一個請求不知道第二個請求沒有正確完成)。
編輯:
使用CURL發布的示例代碼:
假設您有一個帶有text
和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
以確保正確提交表單。
如果您可以控制raf-submitted.php頁面,我建議您對表單執行onclick操作(在本地驗證之后)使用jQuery.ajax調用您的頁面,將字段值作為查詢中的參數提供string(如果使用GET)然后只允許提交進程繼續將數據傳遞給SalesForce。
但是,如果您需要使Salesforce活動不可見,那么您可以使用type = POST以相同的方式調用它們,並在完成后將其移交給您的表單
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();" />
這看起來很像我試圖做的事情。 你已經有一個標記的答案,但我不認為這是你正在尋找的簡單答案。
假設上面的任務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>
它首先通過onclick=
調用doTheFirstTwoTasks()
函數來執行任務1和2,然后通過正常表單提交將表單提交到第三個任務的action=
location。
沒什么特別的,但我不知道有多少人了解到你可以使用onclick=
和 type=submit
(with action=
)在一個表單中使用單個提交按鈕進行兩個不同的操作。
在上面的代碼中,它似乎在action=
onclick=
之前調用onclick=
(或者可能只是因為POST提交比調用JavaScript函數慢...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.