У меня есть форма, которая собирает информацию о клиенте, а затем она
Теперь первые две две задачи были легкими, но третий вызвал у меня проблемы. Для SF я не делаю ничего особенного, просто добавьте их url, и они вытащит всю необходимую информацию из формы. Мне кажется, что для этого мне нужна форма, у которой есть 2 действия, связанные с одной кнопкой отправки (не может иметь 2 формы или 2 кнопки).
Поэтому в моем файле raf.php
меня есть эта форма, и после 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 на стороне сервера (через БД, если у вас есть доступ или веб-сервис, если у них есть одна или по крайней мере отправка данных через CURL на стороне сервера).
возможно, одно из отказов сбоев на стороне клиента (и, похоже, это плохо, если второй не удалось – первый запрос не имеет представления, что scond один не выполнен должным образом).
РЕДАКТИРОВАТЬ:
Пример кода для публикации с помощью 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>
Сначала он вызывает doTheFirstTwoTasks()
через onclick=
для выполнения задач 1 и 2, а затем отправляет форму через обычное представление формы в action=
location для третьей задачи.
Ничего особенного, но я не знаю, сколько людей узнали, что вы можете использовать onclick=
и type=submit
(с action=
) для двух разных действий в одной форме с помощью одной кнопки отправки.
В приведенном выше коде, кажется, он вызывает onclick=
перед action=
(или, возможно, это просто потому, что представление POST медленнее вызова функции JavaScript …)