AJAX отправить несколько форм через JQuery - PullRequest
1 голос
/ 03 декабря 2010

предположим, у меня есть 3 формы

<form name="form1">
<input name="input"></input>
<submit></submit>
</form>

<form name="form2">
<input name="input"></input>
<submit></submit>
</form>

<form name="form3">
<input name="input"></input>
<submit></submit>
</form>

Каждая форма имеет свою собственную кнопку отправки

Теперь предположим, что у меня есть другая форма

<form id="submitAll">
<submit value="submit all"></submit>
</form>

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

  1. , когда submitAll отправлено, это нужно сделать с помощью Ajax и переслать входные данные от всех остальных3 формы для processor.php предпочтительно через POST
  2. processor.php должен уметь различать, какие входы поступают в какую форму ... и затем обрабатывать входы каждой формы отдельно

Мой вопрос ... каков наилучший способ, чтобы процессор.php мог различать, какие входы принадлежат к какой форме .....

Моими предыдущими попытками было использование сериализации jquery длясериализует все входные данные 3 форм, но затем он объединит все входные данные в одну строку и заметит, что, поскольку входные данные в формах имеют одинаковое имя, строка выглядит как «input = blah & input = blah & input = blah»и я не могу различить, какой ввод идет в какую форму .....

Чрезвычайно предпочтительно, чтобы входы в формах имели одинаковое имя, чтобы процессор.php мог работать гладко

Есть ли возможность сделать так, чтобы строки POST передавались в виде массивов или json или любого другого формата, чтобы процессор.php мог различать, какой ввод идет в какую форму, не делая различий между именами ввода?помните, что это нужно сделать через Ajax

заранее спасибо !!!

Ответы [ 3 ]

2 голосов
/ 03 декабря 2010

Почему бы вам не использовать соглашение об именах, например

  • name = "Form1 [input]"
  • name = "Form2 [input]"
  • name= "Form3 [input]"

, затем выполните обычную сериализацию и $ .post, это поможет вам сохранить то же соглашение об именах в цикле процессора

РЕДАКТИРОВАТЬ:

<?php 
foreach($_POST as $form) {
     // $form = array('input' => 'i am here')
     processForm($form); // names are still the same for all forms
}
?>
1 голос
/ 03 декабря 2010

Не хотите ли использовать массив?Входы будут в том порядке, в котором они были сериализованы.

<input name="input[]" />
0 голосов
/ 03 декабря 2010
<form name="form1" class="postable"></form>
<form name="form2" class="postable"></form>
<form name="form3" class="postable"></form>

javascript:

$(document.ready(function(){
    $("a.submitforms").click(function(){
       $('form.postable').each(function(){
           Form = $(this);
           payload = $(Form).serialize();

          //Send payload via Ajax.
       });
    });
}));

Это просто альтернативный метод, но я согласен с методом Иша Кумара !

...