отправить две формы в 1 кнопку - PullRequest
1 голос
/ 23 февраля 2012

Я пытаюсь отправить 2 формы одновременно. Я пытаюсь отправить 1 форму в мою БД, а другую - на другой сайт.

Мой код выглядит так:

function submitform(){
    document.forms["form2"].submit();
    document.forms["form1"].submit();

}

<form name="form1" action="1.php" method="post">
    <!-- ... -->
</form>

<form name="form2" action="2.php" method="post" target="foo">
    <!-- ... -->
</form>

<a onclick="submitform();">Go</a>

Теперь, если я отправляю только форму2, она открывается в новой вкладке и работает, но когда я пытаюсь отправить их обоих, она отправляет только форму1, я не знаю, почему

любая помощь будетбыть оцененным

спасибо

Ответы [ 4 ]

1 голос
/ 18 июня 2012

Комментарий Marc B

Вы можете отправить только один формат за раз. Вам нужно как-то объединить формы в одну до подачи.

это ответ для меня.

1 голос
/ 23 февраля 2012

Одновременно может быть отправлена ​​только одна форма.

document.forms["form1"].submit();
document.forms["form2"].submit();

Первая строка - это отправка HTTP-запроса на ваш сервер с PHP. Ответ перезапишет текущую страницу, скорее всего, новым HTML-документом. Это означает, что последующий код является спорным. Даже если он начнет выполняться, любые изменения не сохранятся.

Чтобы обойти это, объедините две формы в одну или используйте AJAX для получения необходимой информации от сервера «за кулисами» (асинхронно) и обновите страницу вручную с помощью JavaScript.

0 голосов
/ 23 февраля 2012

Вам потребуется использовать ajax-запрос для отправки хотя бы одной из форм и некоторого jasvcript, чтобы приостановить отправку формы при отправке ajax-запроса.

Используя jQuery, вы будете использовать что-то вроде следующего

<form id="theForm" method="post" action="your/formhandler/on/your/server">
    <fieldset id="myInfo">
          // form fields to post data to you in here
    </fieldset>
    <fieldset id="theirInfo">
          // form fields to post data to the 3rd party in here
    </fieldset>
    <input type="submit" value="submit" />
</form>

Более доступно иметь все в одной форме с соответствующей кнопкой отправки, но техника eth javascript (слегка скорректированная) также работает с 2 отдельными формами и тегом <a>.

$(function (){ // run this code once teh page has finished loading
    $("#theForm").submit(function() {
         $.ajax({
            type: "post",
            url: "http://their/form/handler",
            data: $("#theirInfo").serialize() // off the top of my head I'm not 100% sure this will work, you may need to do $("#theirInfo").find("input,select,textarea").serialize()
         })
    });
})

Ваш обработчик форм на вашем сервере будет отправлять все данные, но вы можете просто игнорировать / отбрасывать ненужные биты.

0 голосов
/ 23 февраля 2012

Используя jquery, вы можете позвонить опубликовать свои формы с помощью ajax

function submit_forms() {
   $.post('1.php', $('#form1').serialize(), function() {
      // do stuff when finish
   });
   $.post('2.php', $('#form2').serialize(), function() {
      // do stuff when finish
   });
}
...