将多个参数传递给getJSON创建问题

时间:2015-07-14 05:23:47

标签: javascript php jquery ajax json

我正在使用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"]. ') &mdash; ' . $currency. sprintf("%01.2f", ($product["price"] * $product["qty"])). ' <a href="#" class="remove-item" data-code="'.$product["code"].'" data-color="'.$product["colorname"].'">&times;</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"]没有显示任何内容。我猜电话不正常,所以echoif loop无法显示任何内容。

我无法理解我犯错误的地方。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

如果您使用j Query 1.6或更高版本,请使用

var pcode = $(this).prop("data-code"); //get product code
var pcolorname = $(this).prop("data-color"); //get product color

我希望这些能帮到你