需要使用AJAX动态更新PHP关联数组中的值,而无需更新其他值

问题描述 投票:0回答:1

我正在使用PHP创建购物车页面。我设法将用户要购买的商品存储在一个会话变量中,该变量存储一个关联数组,该数组具有该商品的标识符作为键,该商品的数量作为值:

if (isset($_POST["btnSubmit"])){
        $_SESSION["cart"][$isbn] += 1;
    header("Location:cart.php");
}

我还使用foreach循环和查询设法在购物车上列出了这些物品:

            <?php
            $total;
            foreach($_SESSION["cart"] as $product=>$quantity){
                $query = mysqli_query($con,"SELECT * FROM BOOKS WHERE $product LIKE isbn");
                $data = mysqli_fetch_array($query, MYSQLI_ASSOC);
                $title = $data["title"];
                $price = $data["price"];
                $image = $data["image"];
                $author = $data["author"];
                $isbn = $data["isbn"];
                print 
                "<a href='product.php?product=".$isbn."' class='list-group-item list-group-item-action>
                    <img src='".$image.">
                    <h5>".$title."</h5>
                    <h5>£".$price."</h5>
                </a>
                <select name='quant' id='quant'>
                    <option value=''>".$quantity."</option>
                    <option value='1'>1</option>
                    <option value='2'>2</option>
                    <option value='3'>3</option>
                    <option value='4'>4</option>
                    <option value='5'>5</option>
                    <option value='6'>6</option>
                    <option value='7'>7</option>
                    <option value='8'>8</option>
                    <option value='9'>9</option>
                    <option value='10'>10</option>
                </select>";

                $total += $price*$quantity;
            }
            ?>

如您所见,我想使用一个下拉列表来修改购买的商品数量。我需要此列表来更新$ _SESSION ['cart']变量中特定键的值,然后将该数量动态乘以价格以显示总计。为此,我使用的是jQuery。

   <script>
        $(document).ready(function(){
            $("#quant").change(function(){
                $.get('ajax/getTotal.php',{quant:$(this).val()},function(data){
                    $('#total').load(data);
                });
            });
        });
    </script>

我需要知道两件事:

  1. 如何在不影响其他值的情况下更新SESSION变量中的值?
  2. 在更新SESSION变量中的值之后,如何正确使用jQuery动态更新总数?

非常感谢您的帮助。我真的是AJAX的新手,我很迷路。

javascript php jquery ajax associative-array
1个回答
0
投票
为了使这样的更改在服务器端/会话(也由服务器处理)上有效,您还必须向服务器发送POST请求。

最简单的方法是将您的isbn和数量包装为普通<form method="POST" action="/pathToSessionUpdatingScript">。例如。对于isbn使用<input>字段,对于数量使用<select>。如果要避免单击按钮,请像上面一样使用can submit the form using JS / JQuery使用change事件。

然后在服务器端,您只需update the session using another php script

之后您可以redirect回到原始页面。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.