Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

One form, One submission button, but TWO actions

I have a form that collects client's info and then it

  • saves them in the database
  • sends out few emails
  • sends the info to SalesForce (SF) department

Now, the first 2 two task was easy, but the third one is giving me trouble. For SF i don't have do anything special, just have to add their url and they will pull out all the necessary info they need from the form. To me it seems like in order to do these i need the form have 2 actions associated with one submit button (can't have 2 forms or 2 buttons).

So in my raf.php file I have this form, and after submission i have to redirect them to raf-submitted.php page that displays the success/error message and other necessary info.

The form (got the idea from here)

 <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>

The 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;
    }
  });

The raf-submitted.php file take cares of the form validation, database insertion and email issues.

It's not working. I also tried these with no luck:

  • Two onClick actions one button
  • Two Form Action that opens URL in a new window in One Submit button?

Can someone please help me? Thank you!

like image 388
AlwaysANovice Avatar asked Jan 30 '13 21:01

AlwaysANovice


2 Answers

Once a form is submitted, you are no longer on that page. You've navigated away.

The other way you can do this is submit the first action via AJAX, then submit the form naturally to the second destination. I would suggest using jQuery to make your AJAX calls since most of the AJAX code is already there for you to use.

Another option is to have raf-submitted.php perform a POST from your server to the salesforce server once it receives the form data. See: Post to another page within a PHP script

like image 110
Diodeus - James MacFarlane Avatar answered Oct 23 '22 17:10

Diodeus - James MacFarlane


The only way to do this in client side is using AJAX.
It is better to do SF stuff in server side (via DB if you have access or Web service if they have one or at least sending data via CURL at server side).
it is possible one of submissions fail in client side (and it seems to be bad if second one fail - first request has no idea that scond one is not done properly).


EDIT:
Sample code for posting with CURL:
assuming you have a form with a text and a hidden input:

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

you can submit it using CURL like this:

$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);

then you can check $server_output for being sure that form is submitted correctly.

like image 26
Ariyan Avatar answered Oct 23 '22 17:10

Ariyan