我试图让用户只需点击图片即可在购物车中添加/删除商品。我还希望图像在点击时更改,以显示已购买此项目的数量。
最后,我希望购物车存在于同一页面的单独标签上。
到目前为止我所拥有的是:
<?php session_start(); ?>
...
...
<div style="display: block; width:1024px;">
<img id="image_id" src="image.png" width="110" height="110" style="margin-left:40px";>
<script>
$('#image_id').toggle(
function() {
$(this).attr('src','image1.png');
<?php $_SESSION['cart']['image_id'] = 1; ?>
},
function() {
$(this).attr('src','image2.png');
<?php $_SESSION['cart']['image_id'] = 2; ?>
},
function() {
$(this).attr('src','image3.png');
<?php $_SESSION['cart']['image_id'] = 3; ?>
},
function() {
$(this).attr('src','image.png');
<?php// $_SESSION['cart']['image_id'] = 0; ?>
}
);
</script>
...
...
</div>
<!-- Cart Tab -->
<div id="tab4" style="display:none; width:1024px; padding-top:40px;">
<table border="1">
<tr>
<th>Name</th>
<th>Price</th>
<th>Quantity</th>
<th>Total</th>
</tr>
<?php
if($_SESSION['cart']) {
foreach($_SESSION['cart'] as $itemname => $quantity)
{
if($quantity == 0) continue;
$price = $_SESSION['items'][$itemname];
$prod = $price*$quantity;
$_SESSION['total'] += $prod;
echo "<tr>";
echo "<td>" . $itemname . "</td>";
echo "<td>" . $price . "</td>";
echo "<td>" . $quantity . "</td>";
echo "<td>" . $prod . "</td>";
echo "</tr>";
}
echo "<tr>";
echo "<td></td>";
echo "<td></td>";
echo "<td></td>";
echo "<td>" . $_SESSION['total'] . "</td>";
echo "</tr>";
echo "</table>";
}
?>
<a href="#tab1">Continue Shopping</a>
</div>
我遇到的问题是图像更改正确(仅当我点击它并切换四个不同的图像时才会改变),但是当我查看购物车的内容时,它不会改变。它立即执行所有4个php语句。我知道,因为如果我移除最后的拨动开关(我将数量重置为0)并查看购物车,它已经显示我在购买之前有3件商品。
任何帮助将不胜感激。我猜我也可以构建图像作为表单输入,或者在点击时执行脚本的超链接,但我尝试了两种方法都没有运气。
提前谢谢。
答案 0 :(得分:0)
Javascript在浏览器中执行,并且在将页面提供给用户之前在服务器上执行php。
调用javascript时不会执行您的PHP代码段,而是在用户查看页面之前在服务器上执行它们。
不是将PHP代码直接放在javascript函数中,而是需要使用AJAX调用向服务器发送请求。
也就是说,在这种特殊情况下,最好将购物车信息存储在cookie而不是会话中。