Un formulaire, un bouton de soumission, mais DEUX actions
J'ai un formulaire qui recueille client de l'info et puis il
- les enregistre dans la base de données
- envoie quelques mails
- envoie l'info à SalesForce (SF) département
Maintenant, les 2 premiers deux tâche était facile, mais le troisième est de me donner de la difficulté. Pour la SF je n'ai pas de faire quelque chose de spécial, juste ajouter leur url et ils vont se retirer de toutes les informations nécessaires dont ils ont besoin à partir de la forme. Pour moi, il semble que pour ces j'ai besoin du formulaire ont 2 actions associées à un bouton de soumission (ne peut pas avoir 2 formes ou 2 boutons).
Donc, à mon raf.php
fichier, j'ai ce formulaire, et après la présentation, j'ai le rediriger vers raf-submitted.php
page qui affiche les succès/message d'erreur et d'autres informations nécessaires.
La forme (a eu l'idée de ici)
<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>
Le 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;
}
});
La raf-submitted.php
fichier de prendre les soucis de la validation du formulaire, base de données de l'insertion et de l'e-mail de questions.
Ça ne fonctionne pas. J'ai aussi essayé avec pas de chance:
- Deux onClick actions d'un bouton
- Deux Forme d'Action qui ouvre l'URL dans une nouvelle fenêtre dans Un bouton Soumettre?
Quelqu'un peut-il m'aider? Merci!!!!
Vous devez vous connecter pour publier un commentaire.
Une fois qu'un formulaire est soumis, vous n'êtes plus sur cette page. Vous avez navigué loin.
L'autre manière que vous pouvez faire est de soumettre la première action via AJAX, puis soumettez le formulaire naturellement à la deuxième destination. Je suggère l'utilisation de jQuery pour faire vos appels AJAX, car la plupart du code AJAX est déjà là pour vous d'utiliser.
Une autre option est d'avoir
raf-submitted.php
effectuer un POST de votre serveur à l'salesforce serveur une fois qu'il reçoit les données du formulaire. Voir: La poste à une autre page à l'intérieur d'un script PHP$("#referralForm").ajaxSubmit({url: 'https://someAddress.salesforce.com/', type: 'post'})
et pour raf-présentée page<form id="referralForm" ..... method="POST" action="raf-submitted.php">
?Le seul moyen de le faire dans le côté client est à l'aide d'AJAX.
Il est préférable de faire de la SF des trucs dans le côté serveur (via DB si vous avez accès au service Web ou si elles en ont un, ou au moins envoyer des données via CURL à côté serveur).
il est possible de soumissions échouer à côté client (et il semble être mauvais si la seconde l'un de l'échec de la première demande n'a aucune idée de qui cpdn on n'est pas fait correctement).
EDIT:
Exemple de code pour l'affichage avec CURL:
en supposant que vous avez un formulaire avec un
text
et unhidden
d'entrée:vous pouvez l'envoyer à l'aide de CURL comme ceci:
alors vous pouvez vérifier
$server_output
pour être sûr que le formulaire est soumis correctement.Si vous avez le contrôle sur le raf-submitted.php la page que je vous suggère, c'est que vous avez une action onclick pour la forme (après validation) utilise jQuery.ajax pour appeler votre page fournissant les valeurs de champ en tant que paramètres dans la chaîne de requête (si l'utilisation de GET) ensuite, il suffit de permettre à la soumettre processus à continuer à transmettre les données de SalesForce.
Si toutefois vous avez besoin de faire le Salesforce activité invisible alors on pourrait les appeler de la même manière, en utilisant type=POST et de la main hors de votre forme après qui complète
Cela ressemble beaucoup à quelque chose que j'essayais de faire. Vous avez déjà eu une réponse, mais je ne pense pas que c'est de la simple réponse que vous recherchez.
En supposant que la tâche 3 ci-dessus peut être fait un POST pour certains SalesForce .PHP emplacement, et les deux premières tâches pourrait être fait dans une fonction JavaScript, je pense que cela va fonctionner:
Il appelle d'abord la
doTheFirstTwoTasks()
fonction viaonclick=
à faire les tâches 1 et 2, puis soumet le formulaire par l'intermédiaire d'une forme normale de la soumission à laaction=
emplacement pour la troisième tâche.Rien de spécial, mais je ne sais pas comment beaucoup de gens ont appris que vous pouvez utiliser
onclick=
ettype=submit
(avecaction=
) pour deux actions différentes dans un seul formulaire avec un seul bouton soumettre.Dans le code ci-dessus, il semble appeler l'
onclick=
avant laaction=
(ou peut-être que c'est juste parce que le POST de présentation est plus lent que l'appel d'une fonction JavaScript...)