我正在使用Ajax-Json脚本。但这些语言很新。我正在尝试shopping cart example。但是从购物车中删除商品无效。
中的功能如下所示JS
//Remove items from cart
$("#shopping-cart-results").on('click', 'a.remove-item', function(e) {
e.preventDefault();
var pcode = $(this).attr("data-code"); //get product code
var pcolorname = $(this).attr("data-color"); //get product color
alert(pcode);
alert(pcolorname);
$(this).parent().fadeOut(); //remove item element from box
$.getJSON( "cart_process.php", {"remove_code":pcode, "remove_color":pcolorname} , function(data){ //get Item count from Server
alert(data);
$("#cart-info").html(data.items); //update Item count in cart-info
$(".cart-box").trigger( "click" ); //trigger click on cart-box to update the items list
});
});
在上面的代码中,pcode, pcolorname
显示正确的值,alert(data);
显示为[object, Object]
,我不知道是对还是错。
我的产品有多种颜色。例如Product1,蓝色;产品1,红色。当我在购物车中添加并点击了Product1时,蓝色要删除,然后购物车变空,这不应该发生。
cart_process.php
具有显示购物车,从购物车中删除商品的功能。在该功能中,我已经传递了产品代码和产品颜色名称。仍然无法正常工作。
cart_process.php 代码
################## list products in cart ###################
if(isset($_POST["load_cart"]) && $_POST["load_cart"]==1)
{
if(isset($_SESSION["products"]) && count($_SESSION["products"])>0){ //if we have session variable
$cart_box = '<ul class="cart-products-loaded">';
$total = 0;
foreach($_SESSION["products"] as $product){ //loop though items and prepare html content
$cart_box .= '<li>' . $product["name"].', '.$product["colorname"] .' (Qty : ' . $product["qty"]. ') — ' . $currency. sprintf("%01.2f", ($product["price"] * $product["qty"])). ' <a href="#" class="remove-item" data-code="'.$product["code"].'" data-color="'.$product["colorname"].'">×</a></li>';
$subtotal = ($product["price"] * $product["qty"]);
$total = ($total + $subtotal);
}
$cart_box .= "</ul>";
$cart_box .= '<div class="cart-products-total">Total : '.$currency.sprintf("%01.2f",$total).' <u><a href="view_cart.php" title="Review Cart and Check-Out">Check-out</a></u></div>';
die($cart_box); //exit and output content
}else{
die("Your Cart is empty"); //we have empty cart
}
}
################# remove item from shopping cart ################
if(isset($_GET["remove_code"]) && isset($_GET["remove_color"]) && isset($_SESSION["products"]))
{
$product_code = filter_var($_GET["remove_code"], FILTER_SANITIZE_STRING); //get the product code to remove
$prod_color = filter_var($_GET["remove_color"], FILTER_SANITIZE_STRING); //get the product color to remove
$product = array();
foreach ($_SESSION["products"] as $cart_itm) //loop through session array var
{
if($cart_itm["code"]!= $product_code && $cart_itm["colorname"]!= $prod_color){ //item does,t exist in the list
$product[] = array('colorname'=>$cart_itm["colorname"], 'name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$cart_itm["qty"], 'price'=>$cart_itm["price"]);
}
$_SESSION["products"] = $product;
}
$total_items = count($_SESSION["products"]);
die(json_encode(array('items'=>$total_items)));
}
getJSON
的值未传递到cart_process.php中的remove item from shopping cart
(在上面的代码中)。如果我echo $_GET["remove_code"]
和$_GET["remove_color"]
没有显示任何内容。我猜电话不正常,所以echo
中if loop
无法显示任何内容。
我无法理解我犯错误的地方。有人可以帮我吗?
答案 0 :(得分:0)
如果您使用j Query 1.6或更高版本,请使用
var pcode = $(this).prop("data-code"); //get product code
var pcolorname = $(this).prop("data-color"); //get product color
我希望这些能帮到你