Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在图像切换上更新php会话变量_Javascript_Php_Html - Fatal编程技术网

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方法)。