Отправка двух форм с помощью 1 действия в javascript с использованием jQuery

#javascript #jquery #ajax #forms

#javascript #jquery #ajax #формы

Вопрос:

Так что это довольно сложно. У меня есть форма, в которой мне нужно отправить результаты в два разных места.

Первое место занимает вызов ajax, где я отправляю результаты на страницу PHP. Второе — это просто отправка формы, все как обычно.

Вот мой javascript:

 <script type="text/javascript">

  $(function() {
    $("#requestaction").click(function() {
      var fname = $("input#first_name").val();
      var lname = $("input#last_name").val();
      var email = $("input#email").val();
      var phone = $("input#phone").val();
      var oid = $("input#oid").val();
      var retURL = $("input#retURL").val();

      var dataString = 'amp;email='   email   'amp;phone='   phone   'amp;oid='   oid   'amp;retURL='   retURL;
      //alert (dataString);return false;
      $.ajax({
          type: "POST",
          url: "http://www.myurl.com/custom/callgateway.php?first_name="   fname   "amp;last_name="   lname,
          data: dataString
      });

      $("#requestaction").click(function() {
          $("#oid").delay(1000);
          $("#nashform").submit();
      });

    return false;
    });

  });
    </script>
  

Итак, чего я хочу, так это чтобы вызов ajax отправлял результаты на эту страницу. И затем я хочу задержку на несколько секунд или сколько бы времени это ни заняло до завершения, и я хочу, чтобы форма с идентификатором #nashform была отправлена. Кажется, что я могу заставить обе формы выполняться по отдельности, но когда я пробую этот код одновременно — полностью выполняется только код #nashform, ajax никогда не получает шанса.

Есть предложения?

Ответ №1:

Поместите отправку формы в успешный обратный вызов ajax-вызова:

 $.ajax({
    type: "POST",
    url: "http://www.myurl.com/custom/callgateway.php?first_name="   fname   "amp;last_name="   lname,
    data: dataString,
    success: function(response) { $("#nashform").submit(); }
    });
  

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

1. Черт возьми, так быстро, да еще и с примером кода. 1 для вас, сэр!

2. Эйджей, у тебя есть только столько времени, чтобы ответить на вопросы jquery 🙂

Ответ №2:

 $.ajax({
type: "POST",
url: "http://www.myurl.com/custom/callgateway.php?first_name="   fname   "amp;last_name="   lname,
data: dataString,
success: thesubmitfunction
});
  

Сделайте отправку формы в thesubmitfunction while, которая будет вызвана после успешного завершения вызова ajax.

Ответ №3:

Вам нужна функция обратного вызова, чтобы отправить вашу форму после ajax() возврата.

Ответ №4:

Вместо задержки, почему бы вам не добавить отправку nashform к обратному вызову, который выполняется после завершения отправки AJAX post? Таким образом, вы потенциально не сократите передачу AJAX в середине или перед публикацией.

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