Javascript 在图像切换上更新php会话变量
我试图允许用户通过简单地单击一个图像来添加/删除购物车中的项目。我还想改变点击图像显示多少这个项目已经购买 最后,我希望购物车存在于同一页面的单独选项卡上 到目前为止,我得到的是:Javascript 在图像切换上更新php会话变量,javascript,php,html,Javascript,Php,Html,我试图允许用户通过简单地单击一个图像来添加/删除购物车中的项目。我还想改变点击图像显示多少这个项目已经购买 最后,我希望购物车存在于同一页面的单独选项卡上 到目前为止,我得到的是: <?php session_start(); ?> ... ... <div style="display: block; width:1024px;"> <img id="image_id" src="image.png" width="110" height="110" style=
<?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>
...
...
$('#图像_id')。切换(
函数(){
$(this.attr('src','image1.png');
},
函数(){
$(this.attr('src','image2.png');
},
函数(){
$(this.attr('src','image3.png');
},
函数(){
$(this.attr('src','image.png');
}
);
...
...
名称
价格
量
全部的
我遇到的问题是,图像更改正确(仅当我单击它并切换四个不同的图像时才会更改),但当我查看购物车的内容时,它不会更改。它立即执行所有4条php语句。我知道,因为如果我移除最后的切换开关(在这里我将数量重置为0)并查看购物车,在我单击一次之前,它已经显示我有3件物品要购买
任何帮助都将不胜感激。我猜我也可以将图像构建为表单输入,或是在单击时执行脚本的超链接,但我尝试了这两种方法都没有成功
提前感谢。在将页面提供给用户之前,Javascript在浏览器中执行,php在服务器上执行 调用javascript时不会执行PHP代码段,而是在用户看到页面之前在服务器上执行 您不需要将PHP代码直接放在javascript函数中,而需要在那里使用AJAX调用,向服务器发送请求
也就是说,在这种特殊情况下,将购物车信息存储在cookie中可能比存储在会话中更好。您不能这样做。您需要将要设置的数字(通过AJAX)发布到分配该数字的服务器端脚本。阅读一个关于Ajax的教程——你在这里做的是重新定义会话变量四次(抱歉,三次-一个是注释出来的),也可能要考虑了解客户端和服务器端技术之间的差异,AltoTurthi已经将PHP代码移到一个单独的文件中,现在我尝试了XMLHttpRequest.open(“GET”,“updatecart.php?action=add&id=1”,true)和$.ajax({url:“updatecart.php?action=add&id=1”,data:,dataType:'json')作为切换点的插入式替换,但两个选项似乎都没有执行。我还缺什么吗?如果我希望每次单击都执行这些调用,那么这些调用应该去哪里??toggle函数似乎只能更新正在切换的图像的属性,不能真正理解其他任何内容。如果希望在每次单击图像时调用这些属性,则应将它们放入click处理程序中(可以使用.click()jQuery方法)。