2013-03-02 237 views
2

我將通過ajax傳遞一個id以被$ _SESSION刪除。 ajax部分工作正常,php在POST中接收id,但是可以放棄的不能被解除。爲什麼???在這裏我的代碼:取消設置php會話變量

阿賈克斯部分:

$(".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); 
     } 
    }) 

}); 

PHP的接收部分:

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

而正是不使用此代碼工作?我們不會猜測發生了什麼問題...... – 2013-03-02 19:21:13

+0

您使用的是什麼版本的jQuery? ['.live()'](http://api.jquery.com/live/)現已被棄用。 – 2013-03-02 19:21:58

+0

對不起,但只是爲了確認,這個過程是否正確:'$ ncart = $ _ SESSION ['cart'];''爲'ncart = array_values($ ncart);'爲'$ _SESSION ['cart'] = $ ncart ;'? – MichaelRushton 2013-03-02 19:23:52

回答

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 
     ) 

)