【问题标题】:ajax call to set/update session shopping cart does not fire设置/更新会话购物车的 ajax 调用不会触发
【发布时间】:2014-05-18 14:05:40
【问题描述】:

我已经使用 stackoverflow 回答了几乎所有关于 php 脚本的问题,在这里我学到了关于 ajax 调用、jquery 和 javascript 相关问题的最多知识。我现在有一个,但是我似乎找不到答案,而且我不确定我做错了什么。

基本上,它是一个购物车,它使用 ajax 调用将产品 ID 存储在会话中 - 在 ajax 调用成功后,如果购物车托盘被隐藏(当它尚未设置时),它应该会出现。然而,问题是,即使是最基本的 ajax 调用也会中断。我的 HTML 看起来像这样(每个产品),缩短了 url,因为它们与示例无关,它们只是链接到产品页面:

<article>
<a href="#">
    <img nopin="nopin" alt="#" src="#">
</a>
<h5>
    <a href="#">Product name</a>
</h5>
<p class="price">
    <a href="#">&euro; 0,00</a>
</p>                
<input type="button" name="bestelknop" id="bestelknop" data-id="'.$product['p_id'].'" value="In winkelmandje">
</article>

我使用 ajax 调用来解析一个 php 文件,该文件的唯一功能是更新购物车:

<?php
session_start();
if(isset($_POST['p_id'])) {
$p_id = $_POST['p_id'];
$_SESSION['cart'][$p_id]++; //add one to the quantity of the product with id $product_id 
}
?>

ajax 调用如下所示:

$(document).ready(function() {
$("#bestelknop").click(function() {
    var p_id = $(this).attr('data-id');

    $.ajax({
        type : 'POST',
    url : '/paginas/winkelmandje/toevoegen.php',
    data: 'p_id='+p_id,
    success : function(data){
                $( "#nav-winkelmandje" ).load('/menu/winkelmandje.php'); 
                if($( "#nav-winkelmandje" ).is(':hidden')) {
       $( "#nav-winkelmandje" ).slideDown();
                }
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) 
    {alert ("Er is iets fout gegaan bij het bestellen. Druk op F5 en probeer het opnieuw.");}

    });
});
});

现在的问题是;第一次工作。我单击一个产品的按钮,ajax 调用成功并且生成的 div 可见(显示您的购物车中有产品)。当我现在单击另一个带有另一个数据 ID 的产品时,ajax 调用根本不会触发。我完全不知道为什么会发生这种情况,还有其他人有线索吗? chrome 和 php 错误报告中的元素检查会给我任何错误。

提前致谢,

斯蒂芬

编辑:单击的第一个产品的按钮仍然有效。我可以将更多该产品添加到会话中,但其他按钮不起作用。

编辑 2:按钮无法正常工作可能是因为我在 javascript 中使用了 id 作为选择器。我现在已将其更改为类并且该函数会触发,例如,我设置了一个警报以查看是否调用了 java,并且确实如此。但是,ajax 调用不会触发并且仍然没有响应。

【问题讨论】:

  • $_SESSION['cart'][$p_id]++;这是什么意思?
  • 这会将产品 id 设置为 session['cart'] 键,数量作为其值。如果不设置,默认数量为1个。
  • 最初,我认为向您的网址添加缓存破坏器可能会有所帮助。但是,您是否希望 data-id 属性中的值在 ajax 发布后发生变化?
  • 否,数据 id 用于标识要添加到会话中的产品,并且对于每个按钮都是唯一的。

标签: php ajax session-variables shopping-cart


【解决方案1】:

嗯,我修好了。显然,由于更改数量的 ++ 方式,php 处理页面引发了偏移错误。我添加了一个检查 [购物车] [产品 ID] 是否存在并进行相应处理的部分,现在它可以工作了。

【讨论】:

    猜你喜欢
    • 2015-07-21
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多