我正在制作一张非常粗糙的购物卡,我使用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() {
}
});
});
答案 0 :(得分:1)
你需要先获得当前的篮子。将其添加到函数的开头:
$basket = $app["session"]->get("basket", array());
第二个参数是默认值,当会话中不存在此类键时返回。这样,在这种情况下,您将得到一个空数组。