循环中的文本框只有第一个返回值jquery php


textboxes inside loop only first one returns value jquery php

我需要把我的产品数量在我的数据库。我的产品显示在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>

在为ajax选择值时,要在整个文档中搜索cart_prod_namecart_txt_quantityhidden_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()
                },
                ...
        });
    });
});