2013-03-02 4 views
2

Я передаю id с помощью ajax, который нужно удалить с помощью $ _SESSION. Часть ajax работает нормально, php получает в POST идентификатор, но доступный не может быть отменен. Зачем??? Вот мой код:Unset php session variable

Аякс части:

$(".delete").live('click', function(e){ 
    e.preventDefault(); 
    var id_to_remove = $(this).attr('id'); 
    //alert(id_to_remove); 
    $.ajax({ 
     type: "POST", 
     url: 'inc/functions/remove_item_from_cart.php', 
     data: { id : id_to_remove }, 
     success: function(data) { 
      $("#content").load('inc/functions/get_checkout_content.php'); 
      alert(data); 
     } 
    }) 

}); 

РНР передающая часть:

session_start(); 
if(isset($_SESSION['cart']) && isset($_POST['id'])){ 
//echo var_dump($_SESSION['cart']); 
$ncart=$_SESSION['cart']; 
if (count($ncart)>0){ 
    unset($ncart[$_POST['id']]); // this is NOT working!!! 
    $ncart=array_values($ncart); 

    $_SESSION['cart']=$ncart; 
    if(count($ncart)==0){ 
     unset($_SESSION['cart']); 
     unset($_SESSION['cart_total']); 
     echo "all_empty"; 
    } // this if part is the only working! 
} 
} 

Любое предложение полезно, почему я не могу сбросить значение переменной сессии? Благодаря!

+2

А что именно не работает с этим кодом? Мы не будем догадываться, что происходит не так ... –

+0

Какую версию jQuery вы используете? ['.live()'] (http://api.jquery.com/live/) теперь устарел. –

+0

Извините, но для подтверждения этот процесс правильный: '$ ncart = $ _ SESSION ['cart'];' to '$ ncart = array_values ​​($ ncart);' to '$ _SESSION ['cart'] = $ ncart ; '? – MichaelRushton

ответ

3

я получил свое собственное решение:

if (count($_SESSION['cart'])>0){ 

foreach ($_SESSION['cart'] as $key => $subarray){ 
    if ($subarray['id'] == $_POST['id']){ 
    unset($_SESSION['cart'][$key]); 
break; 
} 
} 

$_SESSION['cart'] = array_values($_SESSION['cart']); 

} else { 
if(count($_SESSION['cart'])==0){ 
    unset($_SESSION['cart']); 
    unset($_SESSION['cart_total']); 
    echo "all_empty"; 
} 
} 

Это потому, что массив был так:

Array 
(
    [0] => Array 
     (
      [id] => 3 
      [name] => Collier Ano petit 
      [price] => 45 
      [quant] => 1 
      [ptotal] => 45 
     ) 

)