Выведение информации из БД с циклом While и работа с ней через AJAX
Проблема, когда запускаю AJAX заполняя поле onchange="feedback1()", в console дает информацию об id верную, a a1 только первой строки информацию дает в независимости заполнил я поле в первой строке или в любой другой. Что делаю не верно. Спасибо за подсказки.
<div class="row">
<div class="col-md-12">
<div class="card-body">
<table class="table">
<tr><th>№</th><th>Статус</th><th>Имя</th><th>Телефон</th><th>Процедура</th><th>Товар</th><th>Стоимость процедуры</th><th>Стоимость товара</th><th>Время окончания</th><th>7</th></tr>
<?
while($client = mysqli_fetch_assoc($q)) //для обработки неск. записей //Уменьшить размер шрифта??
{
$action_id = $client['id'];
$q_items = mysqli_query($link, "SELECT * FROM action_items WHERE action_id = '$action_id'");
?>
<tr>
<td><input readonly id="id" value="<?=$client['id']?>" size="5"></td> <? //как сделать, чтобы и данные передавались в Ajax и отображалось в браузере не в редактируемом поле, а просто прописывалось???>
<td><?=$client['status']?></td>
<td><?=$client['name']?></td>
<td><?=$client['phone']?></td>
<td><?
while ($row_action = mysqli_fetch_assoc($q_items))
{
$checkbox_id = $row_action['checkbox_id'];
$q_act = mysqli_query($link, "SELECT * FROM checkbox_action WHERE checkbox_id = '$checkbox_id'");
while ($row_name = mysqli_fetch_assoc($q_act))
{
echo "<p>".$row_name['name_action']."</p>";
}
}
?></td>
<td><?=$client['product']?></td>
<td><?=$client['cost']?></td>
<td><?=$client['cost_product']?></td>
<td><?=$client['date_completion']?></td>
<td>
<div class="form-check form-check-inline">
<input class="form-check-input" type="text" id="a1" name="a1" value="" onchange="feedback1()">
</div>
</td>
</tr>
<?}
?>
</table>
</div>
</div>
</div>
</div>
<script>
function feedback1()//При изменении в чекбоксе галочек
{
var id = $('#id').val();
var a1 = $('#a1').val();
console.log(a1, id);
$.ajax({
method: "POST",
url: "add_action_ajax.php",
data: {id:id, a1:a1, feedback1: 1}
})
.done(function( msg )
{
console.log(msg);
});
}
</script>
Ответы (1 шт):
Автор решения: phpproger
→ Ссылка
Решение: Подставьте $client['id'] и a1
<input class="form-check-input" type="text" id="a1" name="a1" value="" onchange="feedback1(тут $client['id'] и a1)">
и отправляйте его в ajax:
function feedback1(id, a1)
{
console.log(id, a1);
...
}
Что вы делаете не так: Вы не учли что html элементы имеют уникальный id, поэтому Js отправляет самый первый элемент с id=a1.