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

时间:2015-08-08 18:18:39

标签: php jquery

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

1 个答案:

答案 0 :(得分:2)

当您选择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()
                },
                ...
        });
    });
});