Как мы можем сохранить данные на двух серверах, используя одну форму sumit?

#jquery #ajax

#jquery #ajax

Вопрос:

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

 <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 != '' amp;amp; $first !='' amp;amp; $last!='' amp;amp; $CEmail!='') {
        $.ajax({
            url:"../wp-admin/admin-ajax.php",
            type:'POST',
            data:'action=contact_formamp;nonce=' $nonce "amp;first=" $first "amp;last=" $last "amp;Phone=" $Phone "amp;Fax=" $Fax "amp;CEmail=" $CEmail "amp;message=" $message,
            success: function() {
            }
        });
    }
});
  

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

Спасибо

Комментарии:

1. Пожалуйста, правильно отформатируйте свой код, используя кнопку «code» в редакторе.

Ответ №1:

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

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

                                }
                           });
                    }
  

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

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

                                }
                           });
                    }
  

Комментарии:

1. Возможно, лучше содержать поля в двух отдельных формах, а затем отправлять соответствующую форму.

Ответ №2:

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

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

Комментарии:

1. можете ли вы привести мне пример?? чтобы я мог лучше понять