@yourbatya
Разрабатываю разработки

Как подключить ajax к форме с данными в цикле?

Привет.
Я вывожу данные из бд в виде таблицы в цикле. У меня есть 4 кнопки. Три кнопки имеют своё значение и вносят его в бд. К ним я подключил ajax без проблем. Осталась проблема с последней кнопкной, которая должна делать submit формы. Вроде сделал всё по примерам, должно работать... Но не работает :(
Вот в такой таблице данные выводятся циклом:
<?php
  $post = get_test();
  foreach ($post as $test):
?>
<form method="post" id="save" class="save">
    <tr>
       <td><input type="text" id="delid" name="delid" value="<?=htmlspecialchars($users['delid'], ENT_QUOTES)?>"></td>
       <td><?=$test['id']?></td>
       <input type="hidden" id="form_id" name="form_id" value="<?=$test['id']?>">
       <td><?=htmlspecialchars($test['delivery_adress'], ENT_QUOTES)?></td>
       <td><?=htmlspecialchars($test['delivery_time'], ENT_QUOTES)?></td>
       <td><?=htmlspecialchars($test['name'], ENT_QUOTES)?></td>
       <td><?=htmlspecialchars($test['phone'], ENT_QUOTES)?></td>
       <td><input type="text" id="sum" name="sum" value="<?=htmlspecialchars($test['sum'], ENT_QUOTES)?>"></td>
       <td><input type="text"  id="logist" name="logist" value="<?=htmlspecialchars($test['logist'], ENT_QUOTES)?>"></td>
       <td><?=htmlspecialchars($test['comment'], ENT_QUOTES)?></td>
       <td><button type="submit">Save</button></td>
       <td><button type="button" name="delivery_status" value="4">Очист</button></td>
       <td><button type="button" name="delivery_status" value="1">Отдал</button></td>
       <td><button type="button" name="delivery_status" value="2">Отказ</button></td>       
        </tr></form>
<? endforeach; ?>

Вот такой код без ajax-а спокойно сохраняет все данные из формы в бд.
<?php
require_once('database.php');
$link->set_charset("utf8");
$form_id = (int)$_POST['form_id'];
$sum = (int)$_POST['sum'];
$delid = (int)$_POST['delid'];
$log = strip_tags(trim($_POST['logist']));
$SQL = "UPDATE Users SET logist='$log', sum='$sum', delid='$delid' WHERE id=$form_id";
$result = mysqli_query($link, $SQL);
echo json_encode(['status' => 'success']);
?>

И я написал вот такой ajax-запрос, который сначала работал только для первой итерации, но в итоге не работает вообще и я не пойму почему.
$("#save").submit(function(){
    e.preventDefault();
    $.ajax({
        type: "POST",
        dataType: 'json',
        url: "tost.php",
        data: $(this).serialize(),
        success: function(response) {
            if (response['status'] == 'success') {
                alert('Данные переданы');
            } else {
                alert('Произошла ошибка!');
            }
        }
    })
    return false;
})

Может подскажете что не так с этим кодом?
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
@yourbatya Автор вопроса
Разрабатываю разработки
Рабочий код. Сделал через метод closest
$('button[name="save"]').on('click', function() {
    let $row = $(this).closest('tr');
    let data = $row.find('input').serialize();
    $.ajax({
        type: "POST",
        url: "tost.php",
        data: data
    }).done(function() {
        alert("Данные сохранены");
    });
    return false;
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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