Одна форма, одна кнопка отправки, но два действия
у меня есть форма, которая собирает информацию клиента, а затем его
- сохраняет их в базе данных
- отправляет несколько писем
- отправляет информацию в отдел SalesForce (SF)
теперь, первые 2 две задачи были легкими, но третья дает мне проблемы. Для 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
файл позаботится проверка формы, вставка базы данных и вопросы электронной почты.
Это не работает. Я также попробовал это без успеха:
- два действия onClick одна кнопка
- два действия формы, которые открывают URL в новом окне в одной кнопке отправки?
может кто-то пожалуйста, помогите мне? Спасибо!
5 ответов
после отправки формы, вы больше не на этой странице. Вы уплыли.
другой способ сделать это-отправить первое действие через AJAX, а затем отправить форму естественным образом во второй пункт назначения. Я бы предложил использовать jQuery для ваших вызовов AJAX, так как большая часть кода AJAX уже существует для вас.
другой вариант -raf-submitted.php
выполните запись с сервера на сервер salesforce после получения данных формы. Видеть: опубликовать на другой странице в PHP-скрипте
единственный способ сделать это на стороне клиента-использовать AJAX.
Лучше делать SF-материал на стороне сервера (через DB, если у вас есть доступ или веб-сервис, если у них есть один или, по крайней мере, отправка данных через CURL на стороне сервера).
возможно, одно из представлений не выполняется на стороне клиента (и кажется плохим, если второе не выполняется - первый запрос понятия не имеет, что scond one не выполняется должным образом).
EDIT:
Пример кода для проводки с 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 для вызова вашей страницы, предоставляющей значения полей в качестве параметров в строке запроса (если используется GET), просто разрешите процессу отправки продолжить передачу данных в SalesForce.
Если, однако, вам нужно сделать действие Salesforce невидимым, вы можете вызвать их таким же образом, используя type=POST и hand off to ваша форма после этого завершает
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 выше может быть выполнена с сообщением в некотором 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>
он сначала называет