hummingbird
@hummingbird

Что не так при отправке формы с помощью ajax?

Вот код формы:
<form method="post" action="" id="form_{$row['id']}">
	<input type="hidden" name="action" value="save">
	<span id="status_{$row['id']}"></span>
	<button type="button" class="btn btn-primary" onclick="Save('{$row['id']}');">Сохранить</button>
</form>


В цикле ID добавляется, проверено. Далее все эти ID будут передаваться в JS, где тоже нормально принимаются. Проверял alert'ом.

JavaScript код:
function Save(id) {
	var form = $('#form_'+id).serialize();
	$.ajax({
		type: "POST",
		url: "ajax.php",
		data: form,
		success:function(html){
			$('#status_'+id).html(html);
		}
	});
}


Должно быть все нормально, но...

Представим что у нас в БД n записей. После загрузки страницы мы получаем n форм (кнопок), по нажатию на которые данные должны передаваться в ajax.php и там обрабатываться. В данном случае в ajax.php только этот код:
var_dump($_POST);

И что я получаю - все кнопки кроме первой передают данные. Смотрел исходный код страницы - все формы идентичны, за исключением ID:
array(0) { }
array(1) { ["action"]=> string(4) "save" }
array(1) { ["action"]=> string(4) "save" }
array(1) { ["action"]=> string(4) "save" }


Не могу понять, в чем проблема?
  • Вопрос задан
  • 2332 просмотра
Пригласить эксперта
Ответы на вопрос 1
@V_Tjuryakin
Перфекто
А в переменной form что показывает в первой форме?

UPD:
Ваш код прекрасно отрабатывает:
Dr8Ng6bInxYl26.jpg

UPD 2 (Предложение):

Вид формы:
<form method="post" action="">
    <input type="hidden" name="action" value="save">
    <span></span>
    <button type="button" class="btn btn-primary">Сохранить</button>
</form>


JS:
$(document).ready(function() {
            $('.btn').click(function() {
                var p = $(this).parent(),
                    form = p.serialize();

                $.ajax({
                    type: "POST",
                    url: "ajax.php",
                    data: form,
                    success:function(html){
                        p.children('span').html(html);
                    }
                });
            });
        });
Ответ написан
Ваш ответ на вопрос

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

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