【问题标题】:Count SetCookie via AJAX通过 AJAX 计算 SetCookie
【发布时间】:2016-05-21 22:49:25
【问题描述】:

我正在尝试通过 php/ajax 实现“添加到短名单”

这是我的相关代码

从此页面调用 ajax

<a id="shortlist" class="pull-right add-to-shortlist">Add to shortlist</a>
<p id="cookieShortList"><?=$_COOKIE['shortlist_count']?></p>

<script>

$("#shortlist").click(function(){ 
     $.ajax({
        type: "post",
        url: "ajaxcall.php",
        data:{spId : "111",prId : "222"},
        success: function(result) 
        {
            $('#cookieShortList').html(result);
        }
   });
});

</script>

发布数据页面

$s_id = $_REQUEST['spId'];
$product_id = $_REQUEST['prId'];

setcookie("cookie_product[$s_id]", $product_id, time()+ (30),'/');
echo $shortlist_count_c = count($_COOKIE['cookie_product']);
if (isset($_COOKIE['cookie_product'][$s_id])) {

    echo "blah blah";
}

setcookie("shortlist_count", $shortlist_count_c, time()+ (30),'/');

问题是我可以看到 cookie 在我的浏览器上的资源选项卡下设置为 "cookie_product[111]" =&gt; "222" first click on "add to shortlist",但计数已更新 only after second click on "add to shortlist"

【问题讨论】:

  • 您是否考虑过使用sessionStorage - 与 json 结合使用会更简单,无需 ajax 调用和 cookie。..

标签: php ajax cookies setcookie


【解决方案1】:

Read documentation

一旦设置了 cookie,就可以在下一页加载时使用 $_COOKIE 数组访问它们。

试试这个:

$shortlist_count_c = count($_COOKIE['cookie_product']) + 1;

【讨论】:

  • 如果特定产品已经存储在 cookie 中并且用户多次点击该产品,这将失败。
  • 当然可以,但这是最简单的解决方案。当然,您应该添加与应用程序逻辑相关的附加检查(在客户端和服务器端)。例如 - 您可以在客户端检查 cookie,如果产品现在存储在 cookie 中,则不要发送 ajax 请求。这些检查可以(或应该)在服务器端重复。
  • 我的回答是——“但只有在第二次点击“添加到候选名单”后才会更新计数。当你计算饼干时,不存在最后的变化。
猜你喜欢
  • 1970-01-01
  • 2016-10-29
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-12
  • 2020-06-21
  • 2021-02-24
相关资源
最近更新 更多