Обновление корзины при удалении элемента с помощью AJAX, не избавляющегося от элемента - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь удалить элемент из моей корзины, однако он не исчезнет, ​​когда я нажму на кнопку удаления.Мне интересно, что происходит, и я надеялся, что кто-нибудь поможет мне понять, что происходит.Есть некоторый код конца, который я не буду публиковать, потому что я чувствую, что он работает.Кажется, все работает, но когда я нажимаю кнопку удаления, он не удаляет содержимое.

$(document).ready(function(data){

    load_cart_data();

    function load_cart_data()
        {
            $.ajax({
                url: "model/fetchcart.php",
                method: "POST",
                dataType: "json",
                success: function(data){
                    $('#cart_items').html(data.cart_details);
                    $('.total_price').text(data.total_price);
                    $('.badge').text(data.total_item);
                }
            });
        }

    $('.purchase_add').click(function(){
        var product_id = $(this).attr("id");

        var product_name = $('#name'+product_id).val();

        var product_code = $('#code'+product_id).val();

        var product_price = $('#price'+product_id).val();  

        var product_quantity = $('#quantity'+product_id).val();

        var action = "add";

        if (product_quantity > 0) { // as in the value
            $.ajax({
                url: "model/action1.php",
                method: "POST",
                data: {
                    product_id:product_id,
                    product_name:product_name,
                    product_code:product_code,
                    product_price:product_price,
                    product_quantity:product_quantity,
                    action:action,
                },
                success: function(data) {
                    load_cart_data();
                    alert('Item has been added to cart');
                }
            });
        } else {
            alert('Please enter number of quantity');
        }
    });

        $(document).on('click', '.delete', function(){
        var button = $(this);
        var product_id = $(this).attr("id");
        var action = 'remove';
        if(confirm("Are you sure you want to remove this product")) {
        $.ajax({
            url: "model/action1.php",
            method: "POST",
            data: {
                product_id: product_id,
                action: action
            },
            success: function() 
            {
                load_cart_data();
                button.parents('.shopping_cart_item').fadeOut('fast');
                $('#shopping_cart_item'+product_id).remove();
            }

        })
        } 
        else 
        {
    return false;
    } 
});
});

Когда я нажимаю кнопку удаления, я получаю обратную связь, если использую функцию оповещения, нопункт не будет сброшен сам.Ни функция удаления, ни функция fadeOut не удалят содержимое, и СЕССИЯ не будет сброшена, как кажется.

Это часть моего файла действий

if($_POST["action"] == 'remove')
 {
  foreach($_SESSION["shopping_cart"] as $keys => $values)
  {
   if($_SESSION["shopping_cart"][$keys]['product_id'] == $_POST["product_id"])
   {
    unset($_SESSION["shopping_cart"][$keys]);
   }
  }
 }

иэто данные, которые извлекаются из функции load_cart_data ()

<div class="shopping_cart_item" id="shopping_cart_item'.$values['product_id'].'">

            <div class="shopping_cart_img"><img src="image/'.$values['product_code'].'.jpg"></div>

            <div class="shopping_cart_desc">

                <div class="shopping_cart_delete"><p>ET SPORK<span class="dash"> - </span>PREORDER<span class="dash"> -</span> 31%</p><div class="delete" id='.$values['product_id'].'>x</div></div>


                <p class="finish"><span>Finish:</span> <span>'.$values['product_name'].'</span></p>

                <div class="shopping_cart_number">
                    <input type="text" value='.$values['product_quantity'].'><span>x</span><span>'.$values['product_price'].'</span>
                </div>
            </div>
        </div>

Любая помощь будет ЦЕННО ПРИЗНАНА.Спасибо.

1 Ответ

0 голосов
/ 14 октября 2018

Возможно, вы могли бы заменить метод unset, потому что в документации сказано: http://php.net/manual/en/function.unset.php:

Если глобализированная переменная unset () внутри функции, уничтожается только локальная переменная.Переменная в вызывающей среде сохранит то же значение, что и до вызова unset ().

Итак, вы можете использовать это:

if($_POST["action"] === 'remove')
{
    $cart = $_SESSION["shopping_cart"];
    foreach($cart as $keys => $values)
    {
        if($value['product_id'] === $_POST["product_id"])
        {
            unset($cart[$keys]);
            break;
        }
    }
    $_SESSION["shopping_cart"] = $cart;
}

или

if($_POST["action"] === 'remove')
{
    foreach($_SESSION["shopping_cart"] as $keys => $values)
    {
        if($value['product_id'] === $_POST["product_id"])
        {
            array_splice($_SESSION["shopping_cart"], $keys, 1);
            break;
        }
    }
}

Эти примеры приведены в комментариях к документации по удалению свойств сеанса с помощью unset, а register_globals включен.

unset($GLOBALS[_SESSION][$sessionVariableName]);

и

$variable = $_SESSION['variable'];
unset( $_SESSION['variable'], $variable );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...