2

$_SESSION によって削除されるように、ajax によって ID を渡しています。ajax 部分は正常に動作し、php は POST で ID を受け取りますが、vairable を設定解除することはできません。どうして???ここに私のコード:

ajax 部分:

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

セッション変数を設定解除できない理由はありますか? ありがとう!

4

1 に答える 1

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
        )

)
于 2013-03-09T14:53:17.557 に答える