При нажатии на любую из кнопок созданных через цикл, в переменные объявляемые в js всегда передаёт значения только первой из кнопок
<div class="box-container">
<?php
$sql1 = "SELECT * FROM coffee ORDER BY id ASC";
if($result = $conn->query($sql1))
{
foreach($result as $row)
{
?>
<div class="box" >
<img src="<?php echo $row["LinkToThePicture"]; ?>" alt="">
<h3><?php echo $row["Name"]; ?></h3>
<div class="price"><?php echo $row["Price"];?>₽</div>
<input type="submit" id="add-btn" name="add_to_cart" class="btn qwe" value="Добавить в карзину"/>
<input type="hidden" class="id" name="id" value="<?php echo $row["id"];?>"/>
<input type="hidden" class="linkToThePicture" name="linkToThePicture" value="<?php echo $row["LinkToThePicture"];?>"/>
<input type="hidden" class="name" name="name" value="<?php echo $row["Name"];?>"/>
<input type="hidden" class="price" name="price" value="<?php echo $row["Price"];?>"/>
<input type="hidden" class="quantity" name="quantity" value="1"/>
</div>
<?php
}
}
?>
<script>
$(document).ready(function(){
$('.qwe').on('click', function(){
var id = ('input.id').val();
var linkToThePicture = ('input.linkToThePicture').val();
var name = ('input.name').val();
var price = ('input.price').val();
var quantity = ('input.quantity').val();
console.log(id, linkToThePicture, name, price, quantity)
$.ajax({
method: "POST",
url: "CreatingShoppingCart.php",
data: { id: id, linkToThePicture: linkToThePicture, name: name, price: price, quantity: quantity }
})
.done(function(msg) {
alert( "Data Saved: " + msg );
});
})
});
</script>
Ответы (1 шт):
Автор решения: Pr0gramm1st
→ Ссылка
При написании selector'а в виде ('input.id').val() вы выбираете первый элемент из DOM-дерева, который удовлетворяет поиску. Для того, чтобы получить значение id нужного input'а, вам необходимо осуществить более точный поиск, например, вот так:
$(document).ready(function() {
$('.qwe').on('click', function() {
var id = $(this).closest('.box').find('input.id').val(); //метод closest() найдёт ближайшего родителя с классом .box, а метод find() будет искать в этом родителе элемент с классом .id
console.log(id);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="box">
<input class="qwe" value="Submit" type="submit">
<input class="id" value="Раз">
</div>
<div class="box">
<input class="qwe" value="Submit" type="submit">
<input class="id" value="Два">
</div>
А всё остальное по аналогии должно быть понятно.