当我单击“添加到购物车”按钮时... ajax已成功在数据库中添加产品。结果,他应该再次检查php if-else条件。但事实并非如此。但是,刷新页面后,这会导致重新连接到db,信息更新。这是php代码:
<?php
if(isset($products) && is_array($products) && count($products)){
$i=1;
foreach ($products as $data) { ?>
<div class="col-lg-3 col-md-4 col-sm-6" ">
<div class="tile">
<img class="prod_image" src="<?php echo base_url(); ?>../upload/<?php echo $data['image'] ?>">
<div class="prod_detail">
<p class="prod_name"><?php echo $data['name'] ?></p>
<p class="prod_name"><?php echo $data['weight'] ?></p>
<p class="prod_name"><?php echo $data['price'] ?></p>
<?php
//if product already add in cart
$isincart = get_product_from_cart($data['id']);
if($isincart < 1) { ?>
<button class="btn btn-primary" onclick="addtocart(<?= $data['hid'];?>,<?= $data['weight'];?>,<?= $data['price'];?>)">Add to cart</button>
<?php } if ($isincart > 0){
?>
<div id="prod_quant" class="add_btn_sec">
<form id="myform" method="POST" action="javascript:void(0)">
<input type="submit" onclick="quantitydec(<?= $data['id']; ?>)" value="-" class="qtyminus" field="quantity<?= $data['id']; ?>">
<input type="text" id="quantity<?= $data['id']; ?>" name="quantity<?= $data['id']; ?>" value="<?php echo ($isincart) ; ?>" class="qty">
<input type="submit" onclick="quantityinc(<?= $data['id']; ?>" value="+" class="qtyplus" field="quantity<?= $data['id']; ?>">
</form>
</div>
<?php
}
?>
</div>
</div>
</div>
<?php } $i++; } ?>
和ajax脚本在这里
<script type="text/javascript">
function addtocart(p_id,p_weight,p_price)
{
$.ajax({
type: "POST",
url: "<?php echo site_url('index.php/addtocart/addtocart_ajax');?>",
data: {'id': id, 'name': name, 'p_wight': p_weight, 'p_price': p_price},
dataType: 'JSON',
success: function(response){
/*do something here*/
}
});
}
</script>
有人可以建议我如何在不刷新页面的情况下重新检查“ if($ isincart <1)”条件吗?
答案 0 :(得分:0)
首先, PHP -是服务器端语言。在将html文件发送到浏览器之前,将在服务器上解释PHP代码。请注意,浏览器无法解释php代码。
现在 AJAX -Ajax是一种客户端脚本,可以与服务器/数据库进行通信,而无需刷新整个页面。
我为Ajax读的最好的定义是“与服务器交换数据,并更新网页的一部分,而无需重新加载整个页面的方法。”现在要问的问题是,如果要在AJAX成功后运行php代码,则需要发送另一个AJAX请求作为第一个AJAX请求的成功功能。
希望这很有道理。