我目前有一个购物车,该购物车显示在我的菜单中(当您将鼠标悬停在图标上时),可以删除产品。我的购物车还有一个单独的页面,例如付款前的最后一张支票。
当前的问题是,当我从悬停的购物车中删除某些内容时,只有刷新页面后,带有其自己页面的购物车才会更新。
这是我目前从悬停购物车中删除产品的方式:
// Delete a product when clicking on remove icon from shoppingcart
$('body').on('click', '.remove_from_cart', function(event) {
// Stop default behaviour
event.preventDefault();
// Get the ID of the product
var $remove = $(this).attr('id');
url = 'catalog/cart.php';
// Post above values to cart.php
var posting = $.post( url, { remove: $remove} );
// Put the result inside the shopping cart
posting.done(function( data ) {
var content = $( data );
$( "#shoppingcart" ).empty().append( content );
});
});
在我的php脚本中,这就是我要做的:
$deleteprod = $_POST['remove'];
//If the id exists in the session array, delete the product with that id
if(array_key_exists($deleteprod, $_SESSION['producten'])){
unset($_SESSION['producten'][$deleteprod]);
}
无论单击哪个删除按钮,是否都可以单击一次刷新两个Ajax调用?
因此,如果我点击悬停购物车中的“删除产品”,该产品就会在该处以及购物车页面上被删除,反之亦然。
我尝试过仅向php脚本发送一个空ajax请求,该脚本包含我的购物车页面的循环,如下所示:
// Delete a product when clicking on remove icon from shoppingcart
$('body').on('click', '.remove_from_cart', function(event) {
// Stop default behaviour
event.preventDefault();
// Get the ID of the product
var $remove = $(this).attr('id');
url = 'catalog/cart.php';
url1 = 'catalog/cartpage.php';
// Post above values to cart.php
var posting = $.post( url, { remove: $remove} );
// Put the result inside the shopping cart
posting.done(function( data ) {
var content = $( data );
$( "#shoppingcart" ).empty().append( content );
});
var posting1 = $.post( url1 );
posting1.done(function( data1 ) {
var content1 = $( $.parseHTML(data1) );
$( "#cartpage" ).empty().append( content1 );
});
});
由于在我的第一个脚本中从会话中删除了该产品,我认为不需要再次发送ID,所以我只想将循环的会话加载到cartpage.php中。
这是可行的,加载了cartpage.php的内容,但如果没有的话,我有这个
if(!empty($_SESSION['producten'])){
//my loop code
}else{
echo 'U heeft nog niets in uw winkelmand geplaatst';
}
检查会话是否为空,即使有10种产品,如果我删除一个,它也会转到else语句,因此它将会话视为空。为什么?还有更好的方法吗?
但是没有应用css。