Einreichen eines Posts in die database und Weiterleiten an paypal

Ich versuche, Formulardaten an die database zu senden, dann senden Sie den Klienten zu paypal, das IPN verwendet, um eine Antwort zurück zu senden.

Im Moment habe ich das Formular an die database senden, ich habe das IPN funktioniert, mein Problem ist der Umleitungsteil. Ich will, dass alles mit einem Klick erledigt wird …

Mein Formular wird nur an die aktuelle Seite gesendet, auf der die Daten validiert und zur database hinzugefügt werden. Ich kann nicht scheinen, Kopfzeile zu verwenden, weil Daten bereits an die Überschrift gesendet werden.

Was sind meine Optionen / Lösungen? Einfachste Lösung wäre am besten, aber ich bin offen für alles an diesem Punkt.

Für solch eine einfache Aufgabe würden Sie denken, dass es eine einfache Lösung geben würde …

Hier ist mein Code, der das Formular ausgibt:

function display_form() { ?> 
<form action="" method="post">
no_errors()) { $this->addto_db(); ?>
no_errors()) { $this->prepare_fields('saved'); } else { $this->prepare_fields(); }?>
<?php }

Update: Hier ist ein Beispiel für das, was ich versuche zu tun https://stackoverflow.com/a/6753281/1445460

Solutions Collecting From Web of "Einreichen eines Posts in die database und Weiterleiten an paypal"

Ich bin mir nicht sicher, wie ich ein Jahr später auf diese Frage stieß, aber da es unbeantwortet ist …

Anstatt das Formular selbst zu senden und dann zu Paypal umzuleiten, können Sie stattdessen die PayPal-URL als Aktion Ihres Formulars verwenden, aber verwenden Sie Ajax, um die Formulardaten zu speichern, bevor das Formular an Paypal übergeben wird. Sie können die Ajax-Antwort auch verwenden, um das Formular vor der Übergabe vorzubereiten, z. B. einige versteckte Felder zu füllen

Hier ist ein Beispiel:

myform.php :

 
...other form fields...

saveform.php : Verarbeitet die Ajax-Anforderung und gibt eine Antwort zurück, mit der das Formular vor der Übergabe bearbeitet werden kann

 < ?php if (!empty($_POST)) { //save $_POST data to the database ... //also, fill some data as response $response = array('my_hidden_field' => 'this is now filled in'); //next line returns the response echo json_encode($response); } 

myform.js : Übermittelt Formulardaten an saveform.php, bevor sie an paypal gesendet werden

 $j = jQuery.noConflict(); $j(document).ready(function() { $j('#myform').submit(submit_myform); }); function submit_myform() { if (!myform_is_valid()) { window.location.href = "#myform"; return false;//prevent normal browser submission, to display validation errors } else { $j.ajax({ url: 'saveform.php', type: 'POST', data: $j(this).serialize(), dataType:'json', //data type of Ajax response expected from server success: myform_success //callback to handle Ajax response and submit to Paypal }); return false;//prevent normal browser submission, since the form is submitted in the callback } } function myform_is_valid() { $valid = true; //validate data; if there's a validation error, set $valid=false and display errors on page ... return $valid; } function myform_success(response) { //this is called whenever the ajax request returns a "200 Ok" http header //manipulate the form as you wish $j('#my-hidden-field').val(response.my_hidden_field); //submit the form (to the form's action attribute, ie $paypal_url) document.forms['myform'].submit(); } 

Anstelle des Anrufs jquery.ajax können Sie auch den kürzeren verwenden:

 $j.post('saveform.php',$j('#myform').serialize(),myform_success,"json") 

Tatsächlich gibt es eine einfache Lösung. Ich nehme an, dass Sie die Formularverarbeitung durchführen und versuchen, in Ihrer Vorlage umzuleiten? Sie müssen eine frühere Aktion haken , bevor die Header gesendet werden. Beispiel:

 function wpa66284_process_my_form(){ if( isset( $_POST['myform'] ) ){ // process form and redirect } } add_action( 'init', 'wpa66284_process_my_form' ); 
 $j = jQuery.noConflict(); $j(document).ready(function() { $j('#myform').submit(submit_myform); }); function submit_myform() { if (!myform_is_valid()) { window.location.href = "#myform"; return false;//prevent normal browser submission, to display validation errors } else { $j.ajax({ url: 'saveform.php', type: 'POST', data: $j(this).serialize(), dataType:'json', //data type of Ajax response expected from server success: myform_success //callback to handle Ajax response and submit to Paypal }); return false;//prevent normal browser submission, since the form is submitted in the callback } } function myform_is_valid() { $valid = true; //validate data; if there's a validation error, set $valid=false and display errors on page ... return $valid; } function myform_success(response) { //this is called whenever the ajax request returns a "200 Ok" http header //manipulate the form as you wish $j('#my-hidden-field').val(response.my_hidden_field); //submit the form (to the form's action attribute, ie $paypal_url) document.forms['myform'].submit(); 

Bildbeschreibung hier eingeben