簡體   English   中英

需要使用 AJAX 動態更新 PHP 關聯數組中的值而不更新其他值

[英]Need to dynamically update a value in a PHP associative array using AJAX without updating other values

我正在使用 PHP 創建購物車頁面。 我已經設法將人們想要購買的物品存儲在 session 變量中,該變量存儲了一個關聯數組,該數組將物品的標識符作為鍵,將物品的數量作為值:

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 真的很陌生,我很迷茫。

如果我理解正確,那么您正在嘗試的事情是不可能的。 PHP 在構建 HTML 的服務器上運行。 將頁面提供給客戶端/瀏覽器后,您將無法再操作 PHP 變量。 您可以使用 JS 操作 HTML ,例如更改 DOM 元素的值以顯示總數。 但是,這只會在客戶端有效。 使用 jQuery: https://www.w3schools.com/jquery/jquery_dom_set.asp

要使這種更改在服務器端/ session(也在服務器上處理)有效,您必須向服務器發送 POST 請求。

最簡單的方法是將您的 isbn 和數量包裝到普通的<form method="POST" action="/pathToSessionUpdatingScript">中。 例如,對 isbn 使用<input>字段,對數量使用<select>字段。 如果您想避免單擊按鈕,您可以使用 JS / JQuery 使用上面的更改事件提交表單

在服務器端,您只需使用另一個 php 腳本更新 session

之后,您可以重定向到您的原始頁面。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM