2012-04-02 6 views
0

Ich habe viele Links gelesen und viele Beispiele ausprobiert, aber es scheint immer noch nicht funktionieren zu können. Jede Hilfe und Vorschläge würden sehr geschätzt werden.Ein Formular, das zwei Aktionen benötigt (eine lokale, eine remote)

Ich habe eine Form, die zwei Aktionen benötigt:

  1. eine E-Mail mit allen Formulardaten an einen Benutzer E-Mail-Adresse angegeben (kann auf eigenen Host zu tun)
  2. Senden alle Formulardaten auf einem externen Server (CRM-Server) (nicht bearbeiten Fähigkeit, auf einem externen Server

Nach Abschluss dieser beiden Aktionen, danken Sie werden Seite angezeigt.

Meine Gedanken sind im Moment, zwei Formen zu erstellen (nur eine wird für den Benutzer sichtbar sein).

HTML-Formular:

<form id="form1" name="form1" action=""> 
    form1: Last Name: <input type="text" name="Last Name" id="Last Name" class="copy" value="from A"/> 
</form> 

<form id="form2" name="form2" action="externalhost.html"> 
    <input type='text' name='returnURL' value='thankyou.php'> 
    form2: Last Name: <input type="text" name="Last Name" id="Last Name" class="copy" value="target A" /> 
</form> 
<input id="myButton" type="submit" value="hit me..." > 

Wenn der Benutzer gibt die Daten und Zugriffe gespeichert, alle die Daten in die zweite Form werden kopiert.

function form2form(aF1, aF2) { 
var selection = "#" + aF1 + " .copy"; 
jQuery(selection).each(function() { 
    document.forms[aF2].elements[jQuery(this).attr('name')].value = jQuery(this).val(); 
    });   
} 

einreichen Then "form1" Server zu besitzen und E-Mail zu erstellen.

Senden Sie dann "form2" an einen externen Host, um in das CRM-System zu gelangen. Ein Feld in "form2" wird eine Rückgabe-URL sein, die die Dankeseite sein wird.

Die logische, einfache Methode,

jQuery(document).ready(function() { 
    jQuery('#myButton').click(function() { 
    form2form ('form1', 'form2'); 
    jQuery('#form1').submit(); 
    jQuery('#form1').submit(); 
    }); 
}); 

leider nicht funktioniert.

Mein aktueller jquery Code funktioniert auch nicht.

jQuery(document).ready(function() { 
jQuery("#myButton").livequery('click', function() { 
    var form = jQuery("#form2"); 
    var action = form.attr("action"); 
    var serialized_form = form.serialize(); 
    jQuery.post(action, serialized_form, submit_first); 
    }); 
}); 


function submit_first(val) { 
    jQuery("#form1").submit(); 
} 

Wenn Sie mich zu einer praktikablen Lösung leiten können, würde es wirklich helfen. Ich habe mir zu lange Kopfschmerzen zugezogen.

+1

Wissen Sie, dass Sie nur einmal 'jQuery' in seiner langen Form schreiben müssen? Wenn Sie Ihren Code in '(function ($) {....}) (jQuery);' einschließen, können Sie '$' verwenden, egal ob 'noConflict' verwendet wurde oder nicht. – ThiefMaster

Antwort

3

Erfinden Sie das Internet nicht neu. Verwenden Sie jQuery.ajax(), um die Daten an Ihren Server zu senden. Dann Übertrage auf den externen Server.

1

Ich würde das Formular über Ajax an beide Server senden.

Etwas wie:

jQuery("#form1").submit(function() { 
    data = jQuery(this).serialize(); 
    jQuery.post('internal_server', data); 
    jQuery.post('external_server', data); 

    //redirect to thank you page, etc. 
    return false; // Prevent normal form submission 
}); 
Verwandte Themen