我需要将我的产品数量放在我的数据库中。我的产品显示在foreach循环中,包括数量的文本框。但只有第一个文本框正在工作。你能帮我么?非常感谢!
<div class="col-md-9 cartbox">
<?php foreach($result as $row): ?>
<div class="col-md-12 smallbox">
<div class="col-md-3 item_in_box">
<div class="cart_img_div">
<img class="img-responsive prodimage" src="<?php echo $row['prod_image']; ?>">
</div>
</div>
<div class="col-md-3 item_in_box">
<div class="cart_prod_name" data-name="<?php echo $row['prod_name']; ?>">
<?php echo strtoupper($row['prod_name']); ?>
</div>
</div>
<div class="col-md-3 item_in_box">
Quantity: <input type="text" class="cart_txtquantity"/><br>
<input type="button" class="btn btn-warning updateqty" value="Update"/>
</div>
<div class="col-md-3 item_in_box">
<div class="cart_prod_price">
<input type="hidden" class="hidden_price" value="<?php echo $row['price']; ?>"
<b> PHP:</b> <?php echo $row['total_amount']; ?>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<script>
$(document).ready(function () {
$(".updateqty").click(function () {
$.ajax ({
url: "../controller/order/updatequantity.php",
method: "POST",
data: {
prod_name: $(".cart_prod_name").attr('data-name'),
quantity: $(".cart_txtquantity").val(),
price: $(".hidden_price").val()
},
success: function(result) {
alert(result);
},
error: {
function(jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
}
});
});
});
</script>
答案 0 :(得分:2)
当您选择ajax的值时,您正在整个文档中搜索类cart_prod_name
,cart_txt_quantity
和hidden_price
。如果仔细查看ajax结果,您会发现它始终是请求中第一个<div class=smallbox">
的数据。这是因为当您在jQuery选择多个对象上调用.val()
时,它会返回第一个选定对象的值(第一行中的值)。
因此,要解决此问题,您需要查询的上下文(DOM中的节点子集)来搜索特定的类。
例如
$(document).ready(function(){
$(".updateqty").click(function () {
var context = $(this).parents('.smallbox');
$.ajax ({
...
data: {
prod_name: $(".cart_prod_name", context).attr('data-name'),
quantity: $(".cart_txtquantity", context).val(),
price: $(".hidden_price", context).val()
},
...
});
});
});