Как мы можем сохранить данные на двух серверах, используя одну форму sumit? - PullRequest
0 голосов
/ 03 мая 2011

Я использую сторонний инструмент. Вот форма для этого:

<form method="POST"
action="https://www.thewiseagent.com:443/secure/webcontactAllFields.asp"
name="myForm" onSubmit="return chkForm(this);">
<!-- Do not change -->
    <input type="hidden" name="ID" value="67,176,210,31,93,194,29,70,235">
<!-- These fields can be edited -->
    <input type="hidden" name="responsePage" value="http://http://www.expertforyou.com/">
    <input type="hidden" name="Source" value="website referral">
    <input type="hidden" name="Categories" value=""><!-- semicolon;delimited no spaces -->
    <input type="hidden" name="currentUser" value=""><!-- internal team member -->
    <input type="hidden" name="ProgramID" value="">
    <input type="hidden" name="noMail" value="0"><!-- 0/1 if set to 1, no reply to the visitor is sent. -->
    <input type="hidden" name="replyMessage" value="">
    <input type="hidden" name="replySubject" value="">
    <input type="hidden" name="notifySubject" value="">
    <input type="hidden" name="notifyCc" value=""><!-- comma, delimited -->
    <input type="hidden" name="notifyBcc" value=""><!-- comma, delimited -->

<!-- These address fields are optional -->
    <input type="hidden" name="address" value="">
    <input type="hidden" name="city" value="">
    <input type="hidden" name="state" value="">
    <input type="hidden" name="zip" value="">

<!-- For any additional fields, add the field names separated by a comma to the CommaDelimitedFormFields value. These fields will be saved in the extra notes section -->
    <input type="hidden" name="CommaDelimitedFormFields" value="">

<script language=javascript>
<!--
function chkForm(theForm) {
      if(theForm.CFirst.value=="") {
            alert("Please fill in your first name.");
            theForm.CFirst.focus();
            return false;
      }
      if(theForm.CLast.value=="") {
            alert("Please fill in your last name.");
            theForm.CLast.focus();
            return false;
      }
      var email = theForm.CEmail.value;
      if(email.indexOf("@")<1){
            alert("Please fill in your email address \n so I may contact you.");
            theForm.CEmail.focus();
            return false;
      }
      if(document.all) {
            if(theForm.Message.innerText=="") {
                  alert("Please type a message.");
                  theForm.Message.focus();
                  return false;
            }
      } else {
            if(theForm.Message.value=="") {
                  alert("Please type a message.");
                  theForm.Message.focus();
                  return false;
            }
      }
return true;
}
-->
</script>
    <tr>
        <td align="right"> First Name</td>
        <td>
            <input type="text" name="CFirst" size="30" class="CFirst">
            <font size="1">*</font>
        </td>
    </tr>
    <tr>
        <td align="right"> Last Name</td>
        <td>
        <input type="text" name="CLast" size="30" class="CLast">
        <font size="1">*</font></td>
        </tr>
    <tr>
        <td align="right"> Phone</td>
        <td>
        <input type="text" name="Phone" size="30" class="Phone">
        </td>
    </tr>
    <tr>
        <td align="right"> Fax</td>
        <td align="left">
        <input type="text" name="Fax" size="30" class="Fax">
        </td>
    </tr>
    <tr>
        <td align="right"> Email</td>
        <td>
        <input type="text" name="CEmail" size="30" class="CEmail">
        <font size="1">*</font> </td>
    </tr>
    <tr>
        <td align="right" valign="top"> Message</td>
        <td valign="top">
        <textarea rows="8" name="Message" id="Message" cols="40"></textarea>
    <tr>
        <td> </td>
        <td align="left" valign="top">
        <?php    if ( function_exists('wp_nonce_field') )
        wp_nonce_field('submit_form', 'submit_form');
        ?>
        <input type="submit" name="Submit" value="Send" id="submit">
        </td>
    </tr>
</form>

Приведенная выше форма сохраняет данные на внешний сервер, но теперь мне нужно сохранить их и на моем сервере. Поэтому я использую jQuery для этого. Вот код для этого:

$(function(){
    $('#submit').click(function() {
    var $nonce = $("input#submit_form").val();
    var $first = $("input.CFirst").val();
    var $last = $("input.CLast").val();
    var $Phone = $("input.Phone").val();
    var $Fax = $("input.Fax").val();
    var $CEmail = $("input.CEmail").val();
    var $message = $("textarea#Message").val(); 
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    if($message != '' && $first !='' && $last!='' && $CEmail!='') {
        $.ajax({
            url:"../wp-admin/admin-ajax.php",
            type:'POST',
            data:'action=contact_form&nonce='+$nonce+"&first="+$first+"&last="+$last+"&Phone="+$Phone+"&Fax="+$Fax+"&CEmail="+$CEmail+"&message="+$message,
            success: function() {
            }
        });
    }
});

Теперь, если я удаляю действие из тега формы, он будет вставлять записи в мою базу данных, но я не могу этого сделать, так как я должен также сохранять данные на внешний сервер. Кто-нибудь может знать, как мы можем это сделать?

Спасибо

Ответы [ 2 ]

1 голос
/ 03 мая 2011

Это часть, которая отправляет данные на сервер:

                    $.ajax({
                        url:"../wp-admin/admin-ajax.php",
                        type:'POST',
                        data:'action=contact_form&nonce='+$nonce+"&first="+$first+"&last="+$last+"&Phone="+$Phone+"&Fax="+$Fax+"&CEmail="+$CEmail+"&message="+$message,
                           success: function() {

                                }
                           });
                    }

Просто дважды позвоните и установите другой URL для получателя сообщения:

                    $.ajax({
                        url:"https://www.thewiseagent.com:443/secure/webcontactAllFields.asp",
                        type:'POST',
                        data:'action=contact_form&nonce='+$nonce+"&first="+$first+"&last="+$last+"&Phone="+$Phone+"&Fax="+$Fax+"&CEmail="+$CEmail+"&message="+$message,
                           success: function() {

                                }
                           });
                    }
1 голос
/ 03 мая 2011

Прежде всего, не $ -prefix JS vars, если они не являются объектами jQuery. .val() возвращает простые строки (или массивы для некоторых полей).

Затем, чтобы решить вашу проблему, вам нужно сначала отправить форму на ваш сервер, используя AJAX, а затем, когда запрос завершится (т.е. при обратном вызове успеха), отправить форму на внешний сервер, который вам нужно указать в action форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...