【发布时间】:2018-02-19 20:51:33
【问题描述】:
我希望我已经制定了正确的标题。我是编程新手,正在努力解决问题。
我正在尝试构建自己的电子商务购物车(JS、PHP、HTML)。一切正常(添加商品、显示商品和其他所有内容从购物车中删除订单除外。)
现在的问题: 我无法从购物车中删除订单。(如果我点击按钮,什么都不会发生)但是如果我刷新/重新加载页面。它工作正常。但我想删除它而不重新加载页面。仅使用 ajax/js。
我想这可能是因为我在添加新项目时正在重新加载购物车 div,有没有可能,那个问题?
我不知道你需要多少代码。我会尽量给最重要的。
<!-- Shopping Cart MODAL -->
<div class="modal fade shoppingCartModal" id="shoppingCartModal" class="modal" style="margin-top:40px;">
<div class="modal-dialog modal-lg" style="background-image: url('/Web/Images/ACP/background.gif');">
<div class="modal-content">
<div class="container">
<?php $shop->shoppingCart(); ?>
</div>
</div>
</div>
</div>
<!-- END OF Shopping Cart MODAL -->
这里是购物车功能:
public function shoppingCart(){
try{
$session_id = session_id();
?>
<table id="cart" class="table table-hover table-condensed">
<thead>
<tr>
<th style="width:50%">Product</th>
<th style="width:10%">Price</th>
<th style="width:8%">Quantity</th>
<th style="width:22%" class="text-center">Subtotal</th>
<th style="width:10%"></th>
</tr>
</thead>
<?php
$stmt = $this->conn->prepare("SELECT * FROM shop_shoppingcart WHERE session_id='$session_id'");
$stmt->execute();
$result = $stmt->fetchAll();
$total = 0;
foreach ($result as $order){
$item_id = $order['item_id'];
$stmt = $this->conn->prepare("SELECT * FROM shop_items WHERE id='$item_id'");
$stmt->execute();
$result = $stmt->fetchAll();
foreach ($result as $item){
?>
<tbody id="cart_item_<?php echo $item['id']; ?>">
<tr>
<td data-th="Product">
<div class="row">
<div class="col-sm-2 hidden-xs"><img src="../Web/<?php echo $order['item_image']; ?>" alt="..." class="img-responsive"/></div>
<div class="col-sm-10">
<h4 class="nomargin"><?php echo $order['item_name']; ?></h4>
<p>Color: <?php echo $order['item_color']; ?></br> Size: <?php echo $order['item_size']; ?></p>
</div>
</div>
</td>
<td data-th="Price">
<?php if($item['saleprice'] > 0.00){
?><span style="color:green"><?php echo $item['saleprice']; ?></span></br><?php
?><s><span style="color:red"><?php echo $item['price']; ?></span></s></br><?php
}else{
?><span style="color:green"><?php echo $item['price']; ?></span></br><?php
} ?></td>
<td data-th="Quantity">
<p style="text-align:center"><?php echo $order['item_quantity']; ?></p>
</td>
<?php $itemTotal = $order['item_price'] * $order['item_quantity']; ?>
<td data-th="Subtotal" class="text-center"><?php echo $itemTotal; ?></td>
<td class="actions" data-th="">
<button id="delete_order_<?php echo $order['id']; ?>" class="btn btn-danger btn-sm"><i class="fa fa-trash-o"></i></button>
</td>
<?php $total += $itemTotal; ?>
</tr>
</tbody>
<script>
$(function(){
$("#delete_order_<?php echo $order['id']; ?>").click(function(){
$.ajax(
{ url: "Shop.php?delete_item=true?action=select&id=<?php echo $order['id'];?>",
type: "get",
success: function(result){
document.getElementById('cart_item_<?php echo $item['id']; ?>').style.display = 'none';
$('#cart_total').load(document.URL + ' #cart_total');
$('#navigation').load(document.URL + ' #navigation');
}
});
});
});
</script>
<?php } } ?>
<tfoot>
<tr>
<td><a href="#" onclick="continueShopping()" class="btn btn-warning"><i class="fa fa-angle-left"></i> Continue Shopping</a></td>
<td colspan="2" class="hidden-xs"></td>
<td class="hidden-xs text-center"><strong id="cart_total">Total: <?php echo $total; ?></strong></td>
<?php if($total > 0.00){ ?><td><a href="#" class="btn btn-success btn-block" id="cart_checkout">Checkout <i class="fa fa-angle-right"></i></a></td><?php } ?>
</tr>
</tfoot>
</table>
<script>
var shoppingCartModal = document.getElementById('shoppingCartModal');
function continueShopping(){
$(shoppingCartModal).modal('hide');
}
</script>
<?php
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
按钮不起作用,如果我不刷新页面。
<button id="delete_order_<?php echo $order['id']; ?>" class="btn btn-danger btn-sm"><i class="fa fa-trash-o"></i></button>
这可能是代码,为什么它不起作用!? (添加新商品时刷新 shoppingCartModal 的脚本)
<script>
function AddToCart_<?php echo $item['id'];?>(){
var post_url = "/Web/Pages/Shop/Shop.php";
var request_method = "post";
var form_data = $(Form_AddToCart_<?php echo $item['id'];?>).serialize();
$.ajax({
url : post_url,
type: request_method,
data : form_data
}).done(function(result){
$('#navigation').load(document.URL + ' #navigation');
$('#shoppingCartModal').load(document.URL + ' #shoppingCartModal');
$('.shop_item_<?php echo $item['id'];?>').modal('hide');
document.getElementById('result-box').innerHTML += '<div class="alert alert-success alert-dismissible fade in" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>Item has been added to Your shopping cart!</div>';
});
}
</script>
这一行:
$('#shoppingCartModal').load(document.URL + ' #shoppingCartModal');
【问题讨论】:
-
您似乎在 PHP 函数中运行原始 HTML。你会想
echo把所有这些都去掉,或者把你的演示从你的逻辑中分离出来。 -
@ObsidianAge 抱歉,不太明白您的意思。你能尽快解释一下吗?此刻我是如何理解的。我需要回显我所有的 html 代码吗?
-
在您最重要的代码中。没有关于删除订单 (delete_order_) 的活动。分享你的完整代码。
标签: javascript php jquery html