0

我正在使用我使用 Silex 创建的 MVC 制作一张非常粗糙的购物卡。我有一个 JS/AJAX 问题。我正在尝试将产品提交到购物篮。问题是,它提交详细信息,在会话中设置它们并且工作正常。添加第二个产品时,它会替换该产品,而不是将其附加到数组中。我尝试了一些不同的东西,但没有成功。(下面的代码)。

干杯,

伊万

采用 ajax 值的路由器:

$app->get('/add/to/cart/{id}/{name}/{price}', function( $id, $name, $price ) use ( $app ) {

$basket[] = array (
    'id'    => $id,
    'name'  => $name,
    'price' => $price
);

$app['session']->set( 'basket', $basket ); 

return new Response( "Added to basket." );

});

这是javascript

$('.add-to-cart').on("click", function() {

$productId  = $(this).attr('product-id');
$productName = $(this).attr('product-name');
$productCost = $(this).attr('product-cost');

$.ajax({  
        type: "GET",  
        url: "http://localhost/php/Test/web/index.php/add/to/cart/"+$productId+"/"+$productName+"/"+$productCost,  
        data: {
            // Doesn't need the data, Silex takes it from the url
        },
        success: function() {  
            // Just to check it worked
            console.log( "add/to/cart/"+$productId+"/"+$productName+"/"+$productCost );
        },  
        error: function() { 

        }  
    }); 
});
4

1 回答 1

1

你需要先得到当前的篮子。将此添加到函数的开头:

$basket = $app["session"]->get("basket", array());

第二个参数是默认值,当会话中不存在这样的键时返回。这样你在这种情况下得到一个空数组。

于 2013-10-15T14:26:53.080 回答