Как отправить (submit) все формы на странице?

На странице есть несколько форм:

<form action="actions.php?action=table_save?id=1" method="POST">
<input  value="Текст в строке 1 столбце 1"  type="text" name="field1">
<input  value="Текст в строке 1 столбце 2"  type="text" name="field2">
</form>

<form action="actions.php?action=table_save?id=2" method="POST">
<input  value="Текст в строке 1 столбце 1"  type="text" name="field1">
<input  value="Текст в строке 1 столбце 2"  type="text" name="field2">
</form>

<form action="actions.php?action=table_save?id=3" method="POST">
<input  value="Текст в строке 1 столбце 1"  type="text" name="field1">
<input  value="Текст в строке 1 столбце 2"  type="text" name="field2">
</form>


Как можно сохранить все эти формы одновременно?
На странице нет лишних форм - т.е. проще говоря нужно submit все формы на странице.
Желательно сделать это с помощью javascript jquery.

PS
Насколько такое сохранение "нормально"?
Фактически будут последовательно вызваны SQL запросы UPDATE для 1 формы, для второй...
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
zkrvndm
@zkrvndm
Архитектор решений
На jQuery это делается примерно так:
var deferreds = []; // Массив для записи Deferred

// Перебором отправляем формы, создаем Deferred
// и добавляем их все в массив который создали выше:

$('form').each(function(num, form) {
	deferreds.push($.Deferred(function(deferred) {
		$.ajax({
			'type': 'POST',
			'url': form.action,
			'data': $(form).serialize(),
			'success': function(data) {
				deferred.resolve(data);
			},
			'error': function(xhr, status) {
				deferred.resolve(status);
			}
		});
	}));
});

// По завершению всех Deferred из массива
// выполняем указанную функцию, в нашем случае
// тупо выводим в консоли все полученные ответы:

$.when.apply($, deferreds).done(function() {
	console.log('Формы успешно отправлены, массив результатов ниже:');
	console.dir(arguments);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы